function PHPHash(const arKey:string):LongWord;
var
h,g:LongWord;
i:Word;
begin
h:=0;
for i:=0 to Length(arKey)-1 do
begin
h := (h shl 4)+Byte(arKey[i+1]);
g := (h and $F0000000); //_HashKey=$F0000000;
if g>0 then
begin
h := h xor (g shr 24);
h := h xor g;
end;
end;
Result:= h;
end;
function TTCPHashTable.HashOf(const Key: string): Cardinal;
begin
Result := PHPHash(Key);
Result:=Result mod FListLength;
end;
function TTCPHashTable.FindData(const key:string): PListInfo;
var
Hash:Cardinal;
begin
Hash:=HashOf(key);
Result:=ListInfos[Hash];
if Result=nil then Exit;
while Result<>nil do
begin
if Result^.Key=key then
Exit;
Result:=Result^.Next;
end;
end;