Ob FileAge hier für die Geschwindigkeit gut ist? Ich glaube nicht.
und FileDateToDateTime prüft hier wohl auch nur das Datum und nicht eine Uhrzeit? Zumindest wenn ich es richtig verstehe. FileDateToDateTime=32 Bit. Double=64 Bit?
Ich habe jedenfalls eben noch herausgefunden, dass meine 2 letzten IF-Abfragen nicht funktionieren. Hier soll ja ein Dateiname (TSearchrec.Name) sortiert werden, wenn bei Datum für Result 0 rauskommt. Also habe ich die letzten beiden IFs mal abgeändert:
Code:
If fjSortUp = 0 Then Result := -AnsiCompareText(List[Index1],List[Index2])
Else Result := AnsiCompareText(List[Index1],List[Index2])
So funktioniert dann auch die Sortierung mit den Dateinamen. Jedoch gibt es dennoch unterschiede zum TC. Es kommt halt darauf an, was der TC macht, wenn der Datumsvergleich bei gleichen Zeiten für Dateien oder Verzeichnisse 0 ergibt. Ich dachte evtl. das hier noch zusätzlich (wenn Result 0 ergibt) andere Datumsquellen genutzt werden (z.B. ein Erstellungsdatum). Aber in dem Verzeichnis wo ich das alles teste, haben die anderen Datumsquellen gleiche Angaben zum normalen Änderungsdatum.
Die Geschichte geht ja dann auch weiter. Zum Beispiel beim Sortieren der Dateigröße. Dort hat man auch gleiche Dateigrößen in einem Verzeichnis. Also muss man sich doch gut überlegen, was man macht, wenn ein Datum oder eine Dateigröße gleich ist. Oder soll man wenn
Index1 < Index2 oder Index1 > Index2 den Wert 0 zurück liefert, weitere Prüfungen auslassen und damit Leben?
Vielleicht könnte noch jemand etwas zu diesem ...Time*24*60*60*1000 schreiben, ob dies so richtig ist.
Michael