Hallo,
ich habe hier schon so manche Routine gesehen, wie man das macht, mit diesem CustomSort.
Hat echt gedauert bis ich meine Daten/Variablen so umgebaut habe bis ich das auch nutzen kann.
Dann auch noch "Pointer" Zeugs. Habe ich ja sonst immer gemieden. *lach
Bei mir schaut es jedenfalls jetzt so aus, für eine CustomSort Function.
Code:
Function SortByDate(List: TStringList; Index1, Index2: Integer): Integer;
Begin
Result := 0;
If Assigned(List) Then
Begin
If (Trunc(TFDListRecord(Pointer(List.Objects[Index1])^).Time*24*60*60*1000) < Trunc(TFDListRecord(Pointer(List.Objects[Index2])^).Time*24*60*60*1000)) Then
Begin
If fjSortUp = 0 Then Result := 1 Else Result := -1;
End Else
If (Trunc(TFDListRecord(Pointer(List.Objects[Index1])^).Time*24*60*60*1000) > Trunc(TFDListRecord(Pointer(List.Objects[Index2])^).Time*24*60*60*1000)) Then
Begin
If fjSortUp = 0 Then Result := -1 Else Result := 1;
End Else
If (List[Index1] < List[Index2]) Then
Begin
If fjSortUp = 0 Then Result := 1 Else Result := -1;
End Else
If (List[Index1] > List[Index2]) Then
Begin
If fjSortUp = 0 Then Result := -1 Else Result := 1;
End;
End;
End;
Abgesehen von einer Optimierung, wollte ich mal fragen ob dies mit dem 24*60*60*1000 richtig ist? Dies ist in vielen Beispielen nicht angegeben. Die Sortierung ist so jedenfalls genauer aber anders wie z.B. von Total-Commander (nachfolgend TC genannt). Die Zeit kommt von TSearchRec.TimeStamp (TDateTime). Übrigens hat TC zum Windows Explorer (Win10) auch ein paar Unterschiede für die Datums-Sortierung. Ich habe zum Testen das Verzeichnis "C:\Windows\WinSxS" genommen. Dort existieren viele Verzeichnisse mit einer gleichen Zeitangabe. Die Unterschiede der Sortierung ergeben sich wohl durch gleiche Zeitangaben bis in die Millisekunden. Es kommt dann wohl drauf an, wie der TC oder der Win-Explorer weiter sortiert. In meiner Routine prüfe ich ja (im Falle von Result = 0 bei den ersten beiden IF-Abfragen) noch den Dateinamen. Bei mir gibt's im Kopf gerade so viel Input... ich kann gar nicht mehr richtig denken
aber vieles versteh ich sowieso nicht.
Aber wie man eine richtige Sortierung macht, würde ich schon gerne lernen. Wobei... was ist richtig? TC oder Win-Explorer? Ich denke mal, in Windows stecken mehr Fehler drin, als im TC
Gruß
Michael