![]() |
Listenreihenfolge bei dir und auch bei Findfirst/FindNext
Einen schönen Nachmittag,
für einen Bildbetrachter lese ich alle Dateien eines Verzeichnisses ein und schreibe sie in eine recordbasierte Datei.. Die Datei befülle ich in einer Schleife mit FindFirst und FindNext.
Delphi-Quellcode:
function TForm1.getPictures(StartDir:String;recursive:Boolean):Integer;
var SearchRec : TSearchrec; begin result := 0; if FindFirst(StartDir+'\*.jpg',faAnyFile,SearchRec) = 0 then begin imageSet.filePath:=ExtractFilePath(StartDir); imageSet.fileName:=ExtractFileName(SearchRec.Name); write(BatchFile,ImageSet); inc(result); While FindNext(SearchRec) = 0 do begin imageSet.filePath:=ExtractFilePath(StartDir); imageSet.fileName:=ExtractFileName(SearchRec.Name); write(BatchFile,ImageSet); inc(result); end; FindClose(SearchRec); end; if recursive then if (FindFirst(StartDir+'*.*',faDirectory,SearchRec)=0) then begin repeat if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then getPictures(StartDir+SearchRec.Name,true); until FindNext(SearchRec)<>0; FindClose(SearchRec); end; end; Mein Problem ist, die Dateien werden nicht in der korrekten Reihenfolge eingelesen. Die gleiche Reihenfolge sehe ich aber auch wenn ich wenn ich dem Verzeichnis das dir Kommando ausführe: Zitat:
in der Liste auftauchen. Im explorer werden die Dateien in der richtigen Reihenfolge aufgelistet. Hat da jemand eine Lösung dazu, oder ist es das beste die Dateinamen in eine StringList zu schreiben und diese zu sortieren? OS ist w2k SP4 Grüße Klaus |
Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex
Hallo Klaus,
die API-Funktionen hinter FindFirst() etc. lesen die Verzeichnisse wie eine typisierte Datei - record sequentiell. Wurde irgendwann ein Slot freigegeben (z.B. durch Löschen einer Datei oder einer temporären Datei) wird die nächste neue Datei dort eingetragen. Die gewünschte Ordnung wird durch die Shell hergestellt. Oder in deinem Fall durch dein Programm. Grüße vom marabu |
Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex
Hallo marabu,
das hilft mir schon mal weiter. Danke für Deine Auskunft. Grüße und ein schönes Wochenende Klaus |
Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex
Unter XP scheint es aber entwerder im Dateisystem schon sortiert zu sein, oder (was ich weniger glaube) der sortiert beim auslesen (z.B. per FuindFirst/FindNext).
Jedenfalls kommen bei mir da immer die Dateien alphabetisch sortiert raus. |
Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex
Könnte die direkte Sortiermöglichkeit des BS vom Dateisystem (NTFS/FAT) abhängig sein?
Ich glaub da gab es schon mal einen Thread ... :gruebel: |
Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex
laut msdn hängt es vom Dateisystem ab wie/ob sortiert wird.
|
Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex
Ja das Phänomen tritt bei mir auch, was ich jetzt erst bemerkt habe; auch nur unter FAT32 auf.
FAT32 deshalb weil ich auch noch von Linux darauf lesend und schreibend zugreife. Danke für die Hilfe! Grüße Klaus |
Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex
Zitat:
|
Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex
@himitsu: :shock: das ist wirklich grausam
|
Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz