![]() |
Wie kann ich eine Prozedur/Funktion benutzen?
Hi. Bin neu hier und Delphi Neuling. Ich hab direkt mal ne Frage. Zuerst der Code:
Delphi-Quellcode:
Wie benutz ich den Code jetzt? Ich will das ein Verzeichnis in meinen Fall nach HTML-Dateien durchsuch und dann in einer ListBox (kann auch was anderes sein) angezeigt wird.
procedure GetFiles(const ADirectory: string; Files: TStringList;
SubFolders: Boolean); // Hilfsfunktion, um Schrägstriche zu entfernen bzw. hinzuzfügen, wenn nötig function SlashSep(const Path, S: string): string; begin if AnsiLastChar(Path)^ <> '\' then Result := Path + '\' + S else Result := Path + S; end; var SearchRec: TSearchRec; nStatus: Integer; begin //Zuerst alle Dateien im aktuelle Verzeichnis finden //Anstatt *.* kann auch etwas anderes wie *.jpg oder *.gif eingegeben werden, //um nur Dateien eines bestimmten Typs zu finden. nStatus := FindFirst(PChar(SlashSep(ADirectory, '*.*')), 0, SearchRec); while nStatus = 0 do begin Files.Add(SlashSep(ADirectory, SearchRec.Name)); nStatus := FindNext(SearchRec); end; FindClose(SearchRec); //Als nächstes nach Unterverzeichnissen suchen und wenn benötigt durchsuchen if SubFolders then begin nStatus := FindFirst(PChar(SlashSep(ADirectory, '*.*')), faDirectory, SearchRec); while nStatus = 0 do begin //Wenn es ein Verzeichnis ist, Rekursion verwenden if ((SearchRec.Attr and faDirectory) <> 0) then begin if ( (SearchRec.Name <> '.') and (SearchRec.Name <> '..') ) then GetFiles(SlashSep(ADirectory, SearchRec.Name), Files, SubFolders); end; nStatus := FindNext(SearchRec) end; FindClose(SearchRec); end; end; Für Antworten wäre ich sehr sehr Dankbar! |
Re: Wie kann ich ein Code benutzen?
Hi!
Herzlich willkommen in der DP. Hier mal ein Beispielaufruf:
Delphi-Quellcode:
Es wird in C:\ jetzt nach allen Dateien gesucht, die Ergebnisse in files gespeichert, Unterordner werden nicht durchsucht. Dann werden der Listbox die Ergebnisse zugewiesen.
procedure TForm1.Button1Click(Sender: TObject);
var files: TStringlist; begin files:=TStringlist.Create; Getfiles('c:\', files,false); Listbox1.Items:=files; files.Free; end; Willst du nur nach *.htm suchen, musst du deinen geposteten Code verändern, an der entsprechenden Stelle steht ein Kommentar. Ciao Frederic |
Re: Wie kann ich ein Code benutzen?
Ansonsten haben wir in unserer Code-Library auch noch diesen
![]() |
Re: Wie kann ich ein Code benutzen?
@ fkerber
Danke, hat geklappt! Aber wie mach ich das, das das Programm auch alle Unterverzichnisse durchsucht? |
Re: Wie kann ich ein Code benutzen?
Einfach als letzten Parameter der Funktion den Wert TRUE übergeben. :wink: Lies dir am besten mal einige Tutorials zu Delphi durch, dann wirst du solche Probleme sehr schnelle auch selber lösen können. :)
|
Re: Wie kann ich ein Code benutzen?
Hi!
Die Procedure GetFiles erwartet 3 Paramter: Den Ordner, die Ergebnisliste und die Angabe, ob Unterverzeichnisse durchsucht werden sollen, oder nicht. Änderst du also den 3. Parameter von false auf True, so werden acuh Unterverzeichnisse durchsucht. Ciao Frederic |
Re: Wie kann ich ein Code benutzen?
Danke, klappt wurderbar! :-D
Hab mir schon genug Tutorials durchgelesen, aber für so ein Problem hab ich nie ne Lösung gefunden. Und außerdem ist doch so ein Forum daür da um Anderen wie mir zu helfen. Dafür bin ich dankbar. Aber weiter zu dem Code. Mann muss sich ja vorher festlegen welches Laufwerk durcht werden soll. In diesen Fall ist das ja C:\. Wie stell ich das an während das Programm läuft? Quasi zur Laufzeit, um nicht jedesmal den Code zu ändern wenn ich auf ne andere Festplatte zugreifen will. |
Re: Wie kann ich ein Code benutzen?
Hallo Sniffi,
für unterschiedliche Laufwerke kannst du ein Edit-Feld nutzen.
Delphi-Quellcode:
Kay
procedure TForm1.Button1Click(Sender: TObject);
begin Getfiles(Edit1.Text, Listbox1.Items, false); //Edit1.Text neu eingefügt end; |
Re: Wie kann ich ein Code benutzen?
Hallo Sniffi,
noch ein Hinweis auf dein Quellcode. Du solltest noch folgendes ändern: Dein Code ist
Delphi-Quellcode:
änder auf
procedure GetFiles(const ADirectory: string; Files: TStringList;
SubFolders: Boolean);
Delphi-Quellcode:
Grüße Kay
procedure GetFiles(const ADirectory: string; Files: TStrings; //TStrings ist an dieser Stelle besser
SubFolders: Boolean); |
Re: Wie kann ich ein Code benutzen?
Vielen vielen Dank!
Ich werd mich morgen wieder melden! Hab jetzt ein Fussballspiel. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 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 by Thomas Breitkreuz