Delphi-Quellcode:
Function Sort1(List: TStringList; Index1, Index2: Integer): Integer;
Begin
Result:=0; //Default Wert
//========================================================
//Der der Index 0 hat soll nach oben sortiert werden.
//========================================================
If Index1=0 then
begin
Result:=-1;
Exit;
end;
If Index2=0 then
begin
Result:=1;
exit;
end;
//========================================================
//Jetzt erst der Vergleich der eigentlichen Daten
//========================================================
if AnsiCompareText(List[Index1],List[Index2])>0 then
begin
Result:=1;
Exit;
end;
if AnsiCompareText(List[Index1],List[Index2])<0 then
begin
Result:=-1;
Exit;
end;
end;
Auf diese Weise kann man eine Sortierung nach verschiedenen Kriterien priorisieren.
Ähnlich wie man eine Excel Tabelle in einem Rutsch nach verschiedenen Spalten Sortieren kann.
Deswegen die strukturierte Schreibweise mit den "Exit" Befehlen.
Ich habs jetzt mal aus dem Gedächtnis geschrieben.
Muss man einfach mal debuggen und sehen was drin ist um die Results richtig rum zu setzen.
Die Geschwindigkeit finde ich Ausreichend. Ich sortiere so sehr große Records, in 5 Ebenen (Prioritäten)
Die Liste enthält 20000 Einträge und wird in einem Sekundenbruchteil sortiert.