1type
2 THackList = class(TStrings)
3 private
4 FList: PStringItemList;
5 end;
6
7
8function CountDigit_Absolute(const lst: TStrings):Integer;
9const arr2 :array[0..255] of byte = (
10 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
11 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
12 0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,0,0,
13 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
14 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
15
16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
17 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
18 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
19 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
20 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
21
22 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
23 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
24 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
25var
26 i, j: Integer;
27 pC: PChar;
28 pStr: ^String;
29begin
30 Result := -1;
31 pStr := @THackList(lst).FList[0].FString;
32 pC := PChar(Pointer(pStr^));
33 for i := 0 to Length(pStr^) - 1 do
34 begin
35 Inc(Result, arr2[Ord(pC^)]);
36 Inc(pC);
37 end;
38
39 result:=(Result mod 9)+1;
40end;