AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateinamen auslesen und sortieren

Ein Thema von Nico B. · begonnen am 5. Apr 2023 · letzter Beitrag vom 11. Apr 2023
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#1

AW: Dateinamen auslesen und sortieren

  Alt 6. Apr 2023, 21:45
Am Ende ist das doch alles das gleiche, oder was denkt ihr was die Delphi Methode intern macht?

Das Problem liegt offenbar woanders.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Nico B.

Registriert seit: 16. Okt 2006
Ort: Riesa
67 Beiträge
 
Delphi XE7 Enterprise
 
#2

AW: Dateinamen auslesen und sortieren

  Alt 11. Apr 2023, 07:12
Hallo zusammen,

dann hier mal mein Code.
Ich muss dazu sagen, dass ich an einem Rechner programmiere, der nicht mit dem Internet verbunden ist.
Ich habe mir zwar beim Abschreiben Mühe gegeben, kann aber nicht ausschließen, dass sich ein Tipp-Fehler eingeschlichen hat.

Delphi-Quellcode:
function Sortierfunktion(Liste: TStringList; Index1: integer; Index2: integer): integer;
begin
  Result:=String.Compare(Liste[Index1],Liste[Index2],[coDigitAsNumbers,coIgnoreCase]);
end;

function AnlagenAuslesen: boolean;
var
  Anlage: TSearchRec;
  DateiListe: TStringList;
  i: integer;
begin
  Result:=true;
  DateiListe:=TStringList.Create;
  DateiListe.Sorted:=true;
  try
    if FindFirst(ExtractFilePath(ParamStr(0)),faAnyFile,Anlage)=0
      then
        try
          begin
            //alle Dateien auslesen
            repeat
              if Anlage.Attr AND faDirectory=faDirectory
                then
                  begin
                    //nichts tun
                  end
                else
                  begin
                    DateiListe.Add(Anlage.Name);
                  end;
            until FindNext(Anlage)<>0;
            //Dateien sortieren
            DateiListe.CustomSort(@Sortierfunktion);
            //Dateien in der richtigen Reihenfolge auslesen
            i:=0;
            while not (DateiListe.Count=i) do
              begin
                DateiAuslesen(ExtractFilePath(ParamStr(0))+DateiListe[i]); //weitere Funktion zum Auslesen der Dateien
                i:=i+1;
              end;
          end;
        finally
          DateiListe.Free;
          FindClose(Anlage);
        end;
  except
    Result:=false;
  end;
end;
Nico Bäger
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Dateinamen auslesen und sortieren

  Alt 11. Apr 2023, 08:42
DateiListe.Sorted:=true; <<--entfernen!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Nico B.

Registriert seit: 16. Okt 2006
Ort: Riesa
67 Beiträge
 
Delphi XE7 Enterprise
 
#4

AW: Dateinamen auslesen und sortieren

  Alt 11. Apr 2023, 09:38
Vielen herzlichen Dank auch an Uwe (ohne sein Drängen hätte ich mir wahrscheinlich nicht gleich die Mühe gemacht das Programm abzutippen)!
Jetzt klappt es.

Diese Codezeile wurde in einem anderen Thread zu dem Thema als unbedingt notwendig betitelt.
Und in euren Beispielen habe ich einfach übersehen, dass ihr sie weggelassen habt.

VIELEN, VIELEN DANK noch einmal.
Und entschuldigt, dass ihr euch wegen meiner Dusseligkeit so lange Gedanken dazu machen musstet.
Nico Bäger
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Dateinamen auslesen und sortieren

  Alt 11. Apr 2023, 10:03
Kommt drauf an

soll automatisch sortiert werden, dann ja, das muß,
soll manuell sortiert werden, weil du hier selber CustomSort aufrufst, dann natürlich nicht.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Dateinamen auslesen und sortieren

  Alt 11. Apr 2023, 11:41
Hmmm die Embarcadoro Hilfe für TStringList.CustomSort ist aber auch etwas unglücklich beschrieben.
Zitat:
Note: You must explicitly call the CustomSort method. Setting the Sorted property only sorts strings using ANSI (Windows) or UTF-8 (Linux) order, as implemented in the Sort method.
Da sollte eigentlich stehen das beides sich gegenseitig bekämpft und CustomSort immer der Verlierer sein wird
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
578 Beiträge
 
Delphi 12 Athens
 
#7

AW: Dateinamen auslesen und sortieren

  Alt 11. Apr 2023, 12:16
Wäre if Anlage.Attr AND faDirectory <> faDirectory nicht einfacher?

Zudem gebe ich noch zu bedenken, dass du mit dem alleinigen Ausschluss von faDirectory sämtliche anderen Attribute ((faReadOnly, faHidden, faSystem, faArchive,faDevice, faNormal, faTemporary, faSparseFile, faReparsePoint, faCompressed,faOffline, faNotContentIndexed, faEncrypted, faSymLink) ) zulässt. Das mag in deinem Anwendungsfall keine Rolle spielen, sehr generisch ist es nicht.
  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:03 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