![]() |
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. |
Re: Wie kann ich ein Code benutzen?
Ändere bitte mal den Titel, da dieser nicht aussagekräftig ist ;)
...:cat:... |
Re: Wie kann ich ein Code benutzen?
Jo. Hab da mal noch ne Frage. Der Code:
Delphi-Quellcode:
Mit dem Code wird ja ein Verzeichnis ab den Desktop geöffnet. Wie mach ich das wenn ich z.B. auf C:\Programme\Test klicke, das er mir in einem RichEdit Feld alle Dateien die im Test Ordner drin sind anzeigt? :?:
function GetFolder(root: integer; Caption: string): string;
var bi: TBROWSEINFO; lpBuffer: PChar; pidlPrograms,pidlBrowse: PItemIDList; begin if (not SUCCEEDED(SHGetSpecialFolderLocation(getactivewindow,root,pidlPrograms))) then exit; lpBuffer := StrAlloc(max_path); bi.hwndOwner := getactivewindow; bi.pidlRoot := pidlPrograms; bi.pszDisplayName := lpBuffer; bi.lpszTitle := pChar(caption); bi.ulFlags := BIF_RETURNONLYFSDIRS; bi.lpfn := nil; bi.lParam := 0; pidlBrowse := SHBrowseForFolder(bi); if (pidlBrowse <> nil) then begin if (SHGetPathFromIDList(pidlBrowse,lpBuffer)) then result := lpBuffer; end; StrDispose(lpBuffer); end; procedure TForm1.Panel3Click(Sender: TObject); begin caption := GetFolder(CSIDL_DESKTOP,'Wählen Sie ein Verzeichnis aus:'); end; |
Re: Wie kann ich eine Prozedur/Funktion benutzen?
Will mir wirklich keiner helfen??? :pale:
:cry: :cry: :cry: |
Re: Wie kann ich eine Prozedur/Funktion benutzen?
Ach kommt leute!!! :cry:
|
Re: Wie kann ich eine Prozedur/Funktion benutzen?
Zitat:
Zum anderen: Ich habe weiter oben im Thread einen Link zu unsere Code-Library gepostet. Hast Du dir diesen einmal angesehen? |
Re: Wie kann ich ein Code benutzen?
Zitat:
So wie ich das sehe mit diesem Code gar nicht, da er sich auf SpecialFolders wie Desktop, eigene Dateien etc. bezieht. Ciao Frederic |
Re: Wie kann ich ein Code benutzen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:15 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