Wenn Item1 < Item2 dann Result < 0, also müsste x < y = -1 sein. (Aber das kann man ja am Ergebnis schnell testen)
Für absteigend, die Rückgabe negieren, also
Result := -Result;
Sehr problematisch ist x = y! Flieskommazahlen (was TDateTime ist) kann man nur schwer sicher auf Gleichheit testen. Deshalb vieleicht eher das "gleich" im letzten else:
Delphi-Quellcode:
if (X < Y) then
Result := -1
else if (X > Y) then
Result := 1
else
Result := 0;
if Absteigend then
Result := -Result;