AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Listenreihenfolge bei dir und auch bei Findfirst/FindNext
Thema durchsuchen
Ansicht
Themen-Optionen

Listenreihenfolge bei dir und auch bei Findfirst/FindNext

Ein Thema von Klaus01 · begonnen am 5. Aug 2006 · letzter Beitrag vom 7. Aug 2006
Antwort Antwort
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#1

Listenreihenfolge bei dir und auch bei Findfirst/FindNext

  Alt 5. Aug 2006, 18:55
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:
19.05.2004 05:50 599.986 AU010026.jpg
19.05.2004 05:50 1.219.131 AU010027.jpg
19.05.2004 05:50 1.033.227 AU010028.jpg
19.05.2004 05:50 915.389 AU010029.jpg
19.05.2004 05:50 693.484 AU010030.jpg
19.05.2004 05:50 651.635 AU010031.jpg
19.05.2004 05:50 608.949 AU010032.jpg
19.05.2004 05:50 1.011.843 AU010033.jpg
19.05.2004 05:50 949.296 AU010035.jpg
19.05.2004 05:50 761.439 AU010036.jpg
19.05.2004 05:50 898.526 AU010037.jpg
19.05.2004 05:50 898.624 AU010038.jpg
19.05.2004 06:04 684.055 AU020035.jpg
19.05.2004 06:03 445.374 AU020002.jpg
19.05.2004 06:03 913.236 AU020003.jpg
Die rot markierte Datei sollte meines Erachtens erst einiges später
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
Klaus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex

  Alt 5. Aug 2006, 19:03
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex

  Alt 5. Aug 2006, 19:06
Hallo marabu,

das hilft mir schon mal weiter.
Danke für Deine Auskunft.

Grüße und ein schönes Wochenende
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#4

Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex

  Alt 7. Aug 2006, 12:52
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex

  Alt 7. Aug 2006, 12:58
Könnte die direkte Sortiermöglichkeit des BS vom Dateisystem (NTFS/FAT) abhängig sein?
Ich glaub da gab es schon mal einen Thread ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex

  Alt 7. Aug 2006, 12:59
laut msdn hängt es vom Dateisystem ab wie/ob sortiert wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex

  Alt 7. Aug 2006, 17:18
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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#8

Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex

  Alt 7. Aug 2006, 18:16
Zitat von Bernhard Geyer:
Könnte die direkte Sortiermöglichkeit des BS...
Als am BS liegt es definitiv nicht, denn FindFirst/FindNext sortiert Alphabetisch und der Explorer nach dieser komischen und verabscheuungswürdigen humanen Variante (macht sich echt besch**, bei hexadezimalen Dateinamen -.-'' )
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex

  Alt 7. Aug 2006, 18:22
@himitsu: das ist wirklich grausam
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Listenreihenfolge bei dir und auch bei Findfirst/FindNex

  Alt 7. Aug 2006, 18:24
Guckuck: http://www.delphipraxis.net/internal...=419260#419260
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz