Soll FindFirst gefundene Dateien in alphabetischer Reihenfolge zurückgeben?

8

Ich hatte gelernt, dass FindFirst Dateien in alphabetischer Reihenfolge gefunden hat, aber kürzlich habe ich festgestellt, dass dies zwar größtenteils der Fall ist, aber einige Dateien nicht alphabetisch sortiert sind.

%Vor%

in einem bestimmten Ordner hier mit etwa 300 Textdateien alle bis auf etwa 8-10 der Dateien werden in der richtigen alphabetischen Reihenfolge zurückgegeben.

Wenn findfirst Dateien nicht in alphabetischer Reihenfolge zurückgibt, gibt es eine Methode, mit der die Ordnerinhalte in alphabetischer Reihenfolge sortiert werden können, damit findfirst Dateien in alphabetischer Reihenfolge zurückgibt?

Grüße,

Rechnung

    
Bill Miller 20.10.2009, 16:07
quelle

3 Antworten

11

Die FindFirst-Funktion sortiert die Suchergebnisse nicht, aber Sie können die Dateien mithilfe einer TStringList bestellen.

%Vor%     
RRUZ 20.10.2009, 16:24
quelle
10

Nein. Weitere Informationen finden Sie in der Dokumentation :

  

Die Funktion FindFirstFile öffnet ein Such-Handle und gibt Informationen über die erste Datei zurück, die das Dateisystem mit einem Namen findet, der dem angegebenen Muster entspricht. Dies kann die erste Datei oder das erste Verzeichnis sein, die / das in einer Verzeichnisauflistungsanwendung (z. B. dem Befehl dir) angezeigt wird, wenn dasselbe Zeichenfolgezeichen für Dateinamen angegeben wird. Dies liegt daran, dass FindFirstFile die Suchergebnisse nicht sortiert. (Hervorhebung hinzugefügt)

    
Sinan Ünür 20.10.2009 16:09
quelle
5

FindFirstFile und FindNextFile geben Dateien in der Reihenfolge zurück, in der sie im Verzeichnis angezeigt werden. Auf einem NTFS-System ist das eine ungefähr alphabetische Reihenfolge. Für etwas wie FAT32 ist die Reihenfolge ziemlich unberechenbar (solange keine Datei gelöscht wird, ist es die Reihenfolge der Erstellung, aber wenn eine Datei gelöscht wird, wird die nächste Datei, die Sie in diesem Verzeichnis erstellen, den von der gelöschten Datei wieder verwenden Datei). Bei einigen Remote-Dateisystemen ist die Reihenfolge wahrscheinlich noch weniger vorhersehbar.

Es ist möglich , die Elemente auf der Festplatte für mindestens einige Dateisysteme (z. B. FAT / FAT32) zu sortieren. In den DOS-Tagen waren Dienstprogramme dazu ziemlich üblich, aber unter den derzeitigen Systemen waren sie meistens nicht in der Gunst, weil der Windows Explorer (und so) Dateien hauptsächlich sortiert, anstatt sie nur in der von FindFirstFile / FindNextFile bereitgestellten Reihenfolge anzuzeigen.

IMO, du solltest wahrscheinlich sehr genau darüber nachdenken, dasselbe zu tun. Das Sortieren der Daten auf der Festplatte funktionierte gut unter DOS, weil im Hintergrund meistens nicht viel im Hintergrund lief. Wenn Sie also ein Verzeichnis sortiert haben, blieb es zumindest für eine Weile sortiert. Heutzutage werden in einer typischen Windows-Box mehr als 20 Prozesse beim Start ausgeführt. Selbst wenn Sie das Verzeichnis sortieren, können Sie sich nicht darauf verlassen, dass es für längere Zeit sortiert bleibt.

    
Jerry Coffin 20.10.2009 16:26
quelle

Tags und Links