![]() |
alle dateien eines ordners ausgeben
hey leute
ich bin nich so der programmierfreak, und komm deshalb auch nich so guet draus wie ihr alle wahrscheinlich. Nun habe ich eine frage: ich möchte einen ordner angeben (ExtractFileDir()) und aus diesem ordner alle files auslesen und zum beispiel in einer listbox ausgeben. wie mache ich das?? ich habe kein ahnung.. bin mal die themen in diesem forum durchgegange und habe ein paar sachen mit api und findfirst / findnext und so gefunden, komme aber überhaupt nicht draus.. :( please help :pale: |
Re: alle dateien eines ordners ausgeben
Sich mal in der Codelib!
![]() |
Re: alle dateien eines ordners ausgeben
Hi und herzlich willkommen in der DP! :dp:
Mit FindFirst usw. liegst Du hier vollkommen richtig:
Delphi-Quellcode:
Rückgabewert ist bei Erfolg 0, sonst Fehlercode
function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;
In Path gibst Du den Suchparameter an, in Deinem Fall [pfad]\*.* In "Attr" gibst Du an, welche Dateien Du suchst (Attribute der Dateien vielmehr)
Code:
In Deinem Fall also faAnyFile
Konstante Beschreibung
faReadOnly Schreibgeschützte Datei faHidden Verborgene Datei faSysFile Systemdatei faVolumeID Laufwerks-ID faDirectory Verzeichnis faArchive Archivdatei faAnyFile Beliebige Datei Um den Dateinamen zu erhalten, musst Du F.Name auswerten. Nun hast Du die erste Datei erhalten. um die weiteren Dateien im Verzeichnis zu finden, ruf FindNext(F) auf und gehe mit F.Name analog vor Nach der letzten Datei (Rückgabewert von findNext<>0) musst Du reservierten Speicher wieder freigeben, und zwar mit FindClose :) Siehe auch OH :zwinker: Schönen Gruß Stephan |
Re: alle dateien eines ordners ausgeben
Hallo, herzlich willkommen in der Delphi-PRAXiS! :dp:
Das sollte etwa so gehen:
Delphi-Quellcode:
[EDIT] Bin ich langsam :?
procedure FindAll(Path: String; List: TStringList);
var SearchRec: TSearchRec; begin List.Clear; if FindFirst(Path + '*.*', faAnyFile, SearchRec) = 0 then repeat List.Add(SearchRec.Name); until FindNext(SearchRec) <> 0; FindClose(SearchRec); end; FindClose ergänzt[/EDIT] |
Re: alle dateien eines ordners ausgeben
riiiisen dank an alle! habt mir weiter geholfen aber was ich völlig ausser acht gelassen habe:
simple und eifache !!FileListBox!! :wall: :wall: :wall: ist am einfachsten ;) aber nochmals vielen danke an alle! *g* |
Re: alle dateien eines ordners ausgeben
Ich hab ein ähnliches Problem:
Ich habe einen Ordner mit vielen (ca. 1000) Dateien. In diesen Ordner werden von einem anderen Programm Logfiles geschrieben, mein Delphiprogramm überwacht in regelmäßigen Abständen den Ordner und überprüft, ob neue Dateien dazugekommen sind und wertet diese aus. Soweit zur Theorie, das Problem an der Sache: Wenn ich mit FindNext durch die Dateien gehe dauert das sehr lange, da es halt viele Dateien sind. Letztendlich interessieren mich aber nur die neusten Dateien, die seit dem letzten Durchlauf dazugekommen sind. Gibt es eine Möglichkeit bei FindNext die Dateien nach dem Erstellungsdatum sortiert (neueste zuerst) zu durchlaufen? Wenn dem so wäre könnte ich den Durchlauf einfach abbrechen, nachdem ich die erste Datei finde, die nicht neu ist, mit dem herkömmlichen FindNext muss ich jedoch immer alle Dateien durchgehen. Vielen Dank und Grüße, Freddy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 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