Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie kann ich eine Prozedur/Funktion benutzen? (https://www.delphipraxis.net/29006-wie-kann-ich-eine-prozedur-funktion-benutzen.html)

sniffy 2. Sep 2004 14:12


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:
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;
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.
Für Antworten wäre ich sehr sehr Dankbar!

fkerber 2. Sep 2004 14:25

Re: Wie kann ich ein Code benutzen?
 
Hi!

Herzlich willkommen in der DP.

Hier mal ein Beispielaufruf:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var files: TStringlist;
begin
 files:=TStringlist.Create;
 Getfiles('c:\', files,false);
 Listbox1.Items:=files;
 files.Free;
end;
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.
Willst du nur nach *.htm suchen, musst du deinen geposteten Code verändern, an der entsprechenden Stelle steht ein Kommentar.


Ciao Frederic

Sharky 2. Sep 2004 14:27

Re: Wie kann ich ein Code benutzen?
 
Ansonsten haben wir in unserer Code-Library auch noch diesen Beitrag mit einem Code zu dem Thema.

sniffy 2. Sep 2004 14:31

Re: Wie kann ich ein Code benutzen?
 
@ fkerber
Danke, hat geklappt!

Aber wie mach ich das, das das Programm auch alle Unterverzichnisse durchsucht?

DeCodeGuru 2. Sep 2004 14:33

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. :)

fkerber 2. Sep 2004 14:34

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

sniffy 2. Sep 2004 14:45

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.

Golze 2. Sep 2004 15:05

Re: Wie kann ich ein Code benutzen?
 
Hallo Sniffi,
für unterschiedliche Laufwerke kannst du ein Edit-Feld nutzen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Getfiles(Edit1.Text, Listbox1.Items, false); //Edit1.Text neu eingefügt
end;
Kay

Golze 2. Sep 2004 15:09

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:
procedure GetFiles(const ADirectory: string; Files: TStringList;
                   SubFolders: Boolean);
änder auf

Delphi-Quellcode:
procedure GetFiles(const ADirectory: string; Files: TStrings; //TStrings ist an dieser Stelle besser
                   SubFolders: Boolean);
Grüße Kay

sniffy 2. Sep 2004 15:53

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 09:34 Uhr.
Seite 1 von 2  1 2      

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