Hallo Sven,
wenn du Gleichheit über den Hash feststellst, dann ist es wohl das Beste, wenn du eine invertierte Liste erzeugst, in der du über den Hash-Wert schnell die Anzahl der URLs bestimmen kannst. Eine sortierte StringList könnte dir da nützlich sein, in deren Objects du einfach den Zähler unterbringst.
Delphi-Quellcode:
// getippt und nicht getestet
var
sl: TStringlist; // sorted = true; duplicates = dupIgnore
procedure Checkin(s: TStrings; hash: string);
var
index: integer;
begin
index := s.IndexOf(hash);
if index < 0
then s.AddObject(hash, Pointer(1))
else s.Objects[index] := Pointer(Succ(Integer(s.Objects[index])));
end;
begin
CheckIn(sl, hash);
end;
Zum Färben kannst du dann schnell auf die Anzahl zugreifen:
Delphi-Quellcode:
function IsUnique(s: TStrings; hash: string): boolean;
begin
with s do
Result := not Assigned(Objects[IndexOf(hash)]);
end;
Grüße vom marabu