Weil ein Pointer kein Objekt ist und somit nicht gecastet werden kann. Entweder mache es so:
Delphi-Quellcode:
function CompareStr(Item1, Item2: Pointer): Integer;
begin
Result := CompareText((TObject(Item1) as TStringList).Strings[0], (TObject(Item2) as TStringList).Strings[0]);
end;
... oder direkt
Delphi-Quellcode:
function CompareStr(Item1, Item2: Pointer): Integer;
begin
Result := CompareText(TStringList(Item1).Strings[0], TStringList(Item2).Strings[0]);
end;