Der ganze Aufwand ist, wie schon beschrieben, überflüssig.
Abgesehen davon ist deine Vergleichsfunktion auch noch falsch.
Delphi-Quellcode:
function SortEventList(Item1, Item2: pointer): Integer;
begin
// ***** FileIndex1 < FileIndex2
if (TOneEvent(Item1).FileIndex < TOneEvent(Item2).FileIndex) then
begin
Result:= 1
end
else
// ***** FileIndex1 > FileIndex2
if (TOneEvent(Item1).FileIndex > TOneEvent(Item2).FileIndex) then
begin
Result:= -1
end
else
// ***** FileIndex1 = FileIndex2
if (TOneEvent(Item1).FileIndex = TOneEvent(Item2).FileIndex) then
begin
if (TOneEvent(Item1).DataSetIndex < TOneEvent(Item2).DataSetIndex) then
Result:= 1
else
if (TOneEvent(Item1).DataSetIndex > TOneEvent(Item2).DataSetIndex) then
Result:= -1
else
Result:= 0;
end;
end;
oder vereinfacht:
Delphi-Quellcode:
function SortEventList(Item1, Item2: pointer): Integer;
begin
Result := TOneEvent(Item2).FileIndex - TOneEvent(Item1).FileIndex;
if Result <> 0 then Exit;
Result := TOneEvent(Item2).DataSetIndex - TOneEvent(Item1).DataSetIndex;
end;