Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ordner nach *.exe durchsuchen (https://www.delphipraxis.net/130111-ordner-nach-%2A-exe-durchsuchen.html)

Flodding 3. Mär 2009 16:24


Ordner nach *.exe durchsuchen
 
Guten Abend zusammen...

ich habe folgenden Quellcode mit dem ich alle Ordner in einem Ordner auflisten kann... ohne Recursive suche und unterdateien ganz einfach so:

--Ordner <-- Zu durchsuchender Ordner
----Ordner im Ordner 1 <-- Erster gefundener Ordner im Ordner
----Ordner im Ordner 2 <-- Zweiter gefundener Ordner im Ordner
----usw.

das ganze lasse ich mit in eine Listbox auflisten.

nun muss ich aber in den unterordnern jeweils noch eine *.exe Datei finden und die in eine andere Listbox eintragen lassen...

ich hab etliche male versucht die FindFiles-funktionen die man ja überall findet um zu schreiben, jedoch ohne ergebniss...

hier mal der code der die ordner in einem ordner NICHT rekursiv findet und auflistet ;)

Delphi-Quellcode:
procedure DirectorySearch(ADirectory: string; AMask: String);
var
  SR: TSearchRec;
begin
    if FindFirst(ADirectory + '*.*', faDirectory, SR)=0 then
    begin
      repeat
        if (SR.Attr and faDirectory = faDirectory) and (sr.Name<>'.') and (sr.Name<>'..') then
        with form1 do begin
        AdvSmoothListBox1.Items.Add.Caption:=(sr.Name);
        AdvSmoothListBox1.Items.Sort;
        end;
      until FindNext(SR)<>0;
      FindClose(SR);
    end;
end;
aufgerufen mit:

Delphi-Quellcode:
DirectorySearch('SUCHORDNER','*.*');
wie gesagt es müssen nur die *.exe Dateien in den jeweiligen unterordnern gefunden werden und in eine weitere listbox aufgelistet werden...

vielen dank im voraus für jede antwort :)

vsti 3. Mär 2009 16:33

Re: Ordner nach *.exe durchsuchen
 
Einfach neues TSearchRec und neues FindFirst/Findnext mit dem Filter '*.exe' und dem Attribut faAnyFile

Flodding 3. Mär 2009 16:38

Re: Ordner nach *.exe durchsuchen
 
an welcher stelle?! als neue Procedure?

sorry ich hab echt lange dran probiert und jetzt verlässts mich langsam...

mr_emre_d 3. Mär 2009 16:50

Re: Ordner nach *.exe durchsuchen
 
Delphi-Quellcode:
...
  if FindFirst(ADirectory + '*.exe', faDirectory, SR)=0 then
  // C:\*.exe -- so in etwa sollte es aussehen
...

Satty67 3. Mär 2009 16:55

Re: Ordner nach *.exe durchsuchen
 
Einfach die Liste mit den Ordnern durchgehen und da nach Exe suchen:
Delphi-Quellcode:
// Eigentlich Blödsinn, für jede Aufgabe eine extra Procedure
// könnte man prima mit ein paar Parametern in einer lösen
// aber zu leichteren Verständnis
procedure ExeSearch(ADirectory: String);
var
  SR: TSearchRec;
begin
    if FindFirst(ADirectory + '\*.exe', faAnyFile, SR)=0 then
    begin
      repeat
        with form1 do begin
          ListBox1.Items.Add(sr.Name);
        end;
      until FindNext(SR)<>0;
      FindClose(SR);
    end;
end;

// Aufrufen etwa so
var
  i : Integer;
begin
  for i := 0 to AdvSmoothListBox1.Items.Count do
  begin
    ExeSearch(AdvSmoothListBox1.Items[i]);
  end;
end;
Ich bin auch kein Code-Spezialist, aber bei deiner ersten Procedure könnte man einiges übersichtlicher machen:

Flodding 3. Mär 2009 16:59

Re: Ordner nach *.exe durchsuchen
 
Zitat:

Zitat von mr_emre_d
Delphi-Quellcode:
...
  if FindFirst(ADirectory + '*.exe', faDirectory, SR)=0 then
  // C:\*.exe -- so in etwa sollte es aussehen
...

das funktioniert so nicht... das hatte ich schon :D

Flodding 3. Mär 2009 17:05

Re: Ordner nach *.exe durchsuchen
 
Zitat:

Zitat von Satty67
Delphi-Quellcode:
  for i := 0 to AdvSmoothListBox1.Items.Count do
  begin
    ExeSearch(AdvSmoothListBox1.Items[i]);
  end;

--> Incompatible Typen: 'String' und 'AdvSmoothListBoxItem'

Satty67 3. Mär 2009 17:14

Re: Ordner nach *.exe durchsuchen
 
Ok, kenne AdvSmoothListBox1 nicht. dachte Items ist eine StringList.

ich muss jetzt etwas raten, funktioniert:
Delphi-Quellcode:
  ExeSearch(AdvSmoothListBox1.Items[i].Caption);
Ansonsten musst Du selber schauen, wo die Strings gespeicheert sind.

Flodding 3. Mär 2009 17:27

Re: Ordner nach *.exe durchsuchen
 
Listenindex überschreitet das Maximum (12)

DeddyH 3. Mär 2009 17:29

Re: Ordner nach *.exe durchsuchen
 
Delphi-Quellcode:
for i := 0 to AdvSmoothListBox1.Items.Count -1 do
Wenn das erste Element den Index 0 hat, hat das letzte den Index Count -1.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 Uhr.
Seite 1 von 3  1 23      

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