Autor Beitrag
Xanatos Nevelainen
Hält's aus hier
Beiträge: 12

WIN XP HOME SP2; Delphi 07

BeitragVerfasst: Di 01.07.08 22:57 
Yub Yub da bin ich mal wieder !!
Ich möchte ein Programm schreiben, das mir alle Dateien in einem bestimmten Ordner auf listet, die eine bestimmte Endung haben (z.B. ".dds")
Geht das mit der Delphi integrierten Suchefkt ?? Da muss man ja Position angeben, oder die wird einem angegeben... ???
Und ausserdem fkt das ja nur bei Texten. Ich will aber Ordner durchsuchen lassen.

Zusammengefasst:
Man gibt einen Ordner an, und eine Dateiendung. Dann bekommt man anschliessend alle Dateien mit Pfad und Namen aufgelistet.

??? Kennt jemand so ein Programm, oder weiss jemand wie sowas geht ???

vielen Dank und liebe Grüsse, XN


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 01.07.2008 um 23:04
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 01.07.08 23:05 
Moin!

Suche in: Delphi-Forum, Delphi-Library DRIVETOOLS

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Di 01.07.08 23:17 
so sollte das gehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var 
  Found: Integer;
  SearchRec: TSearchRec;
begin
  Found := FindFirst(Path+'\*.*', faDirectory, SearchRec);
  while Found = 0 do
    begin
      if ExtractFileExt(SearchRec.Name) = '.XXX' then
        begin  
          //MACHE WAS MIT DER DATEI
        end;
      Found := FindNext(SearchRec);  
    end;
  FindClose(SearchRec);
end;


MfG Bergmann.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 01.07.08 23:28 
Du könntest die Dateiendung auch gleich als Suchkriterium einbinden:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var Found: Integer; SearchRec: TSearchRec;
begin
  Found := FindFirst(Path+'\*.xxx', faDirectory, SearchRec);
  if SearchRec <> 0 then  
    try
      while Found = 0 do
      begin
        //MACHE WAS MIT DER DATEI
        Found := FindNext(SearchRec);  
      end;
    finally
      FindClose(SearchRec);
    end;
end;
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Di 01.07.08 23:34 
ja ich weiß, aber da gabs bei mir immer probleme und der hat die Datein dann nie gefunden, deshalb hab ich das so gelöst...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 02.07.08 09:18 
Dann hast du etwas falsch gemacht.
Xanatos Nevelainen Threadstarter
Hält's aus hier
Beiträge: 12

WIN XP HOME SP2; Delphi 07

BeitragVerfasst: Mi 02.07.08 22:19 
Also mit dem Tool von Bergmann89 funzt es einwandfrei :)
Aber wie kann ich auch gleich noch eventuelle Unterordner mit durchsuchen lassen ??
Auch diese Dateien sollen dann mit dem Pfad angegeben werden ! (In nem Memo)

Und wie geht das eigentlich, dass ich mir einen Pfad auswählen kann, z.B. wie beim Extrahieren mit 7z ??

Danke für die schnelle Hilfe !!!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 02.07.08 22:45 
Moin!

user profile iconXanatos Nevelainen hat folgendes geschrieben:
Aber wie kann ich auch gleich noch eventuelle Unterordner mit durchsuchen lassen ??
Auch diese Dateien sollen dann mit dem Pfad angegeben werden ! (In nem Memo)
user profile iconNarses hat folgendes geschrieben:
Suche in: Delphi-Forum, Delphi-Library DRIVETOOLS


user profile iconXanatos Nevelainen hat folgendes geschrieben:
Und wie geht das eigentlich, dass ich mir einen Pfad auswählen kann, z.B. wie beim Extrahieren mit 7z ??
Bitte nur eine Frage pro Thread, sonst müssen wir das Topic schließen! :|

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mi 02.07.08 23:21 
Hi,

das geht damit:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure TForm1.FindDir(Path, Datei: String);
var
  Found,i,j: Integer;
  SearchRec: TSearchRec;
  DirList,FileList: TStringList;
begin
  DirList := TStringList.Create;
  FileList := TStringList.Create;
  Found := FindFirst(Path+'\*.*', faDirectory, SearchRec);
    while Found = 0 do
  begin
    if (SearchRec.Name <> '.'and (SearchRec.Name <> '..'then
      begin
        DirList.Add(Path+'\'+SearchRec.Name);
        if ExtractFileExt(SearchRec.Name) = Datei then
          FileList.Add(Path+'\'+SearchRec.Name);
      end;
    Found := FindNext(SearchRec);
  end;
  FindClose(SearchRec);

  if DirList.Count <> 0 then
    for i := 0 to DirList.Count-1 do FindDir(DirList.Strings[i],Datei);

  //MACHE WAS MIT DEN DATEN IN DER FILELIST

  DirList.Free;
  FileList.Free;
end;


Damit bekommst du alle Datein des Ordners (+Unterordner). Die sind dann in
der FileList aufgelistet!

MfG Bergmannn.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 02.07.08 23:50 
Moin!

user profile iconBergmann89 hat folgendes geschrieben:
das geht damit:
Ich würde von deinem Code abraten :?
  • keine Resourcen-Schutzblöcke für die Listenobjekte :shock:
  • die implizite Rekursion dürfte wenigstens gewöhnungsbedürftig sein; aber für den Fall, eine Liste aller Dateien in den Unterordnern zu erhalten, schlicht falsch - weil eine (Teil-)Liste jeweils nur in einer Rekursionsebene existiert
Ich weiß nicht was so schwer daran ist, die DriveTools von user profile iconLuckie mal anzusehen... :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Fabian E.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 554

Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
BeitragVerfasst: Do 03.07.08 03:36 
Du könntest auch user profile iconHeiko's Unit SearchTool.pas nehmen. Die lässt sich wirklich sehr einfach bedienen und ist auch sehr schnell. Hat glaube ich sogar was mit den DriveTools zu tun. :)
Du findest sie hier.
Xanatos Nevelainen Threadstarter
Hält's aus hier
Beiträge: 12

WIN XP HOME SP2; Delphi 07

BeitragVerfasst: Do 03.07.08 11:01 
Yub Yub

DANKE Fabian, für diesen tollen Hinweis !!! Das Proggy von Heiko funktioniert so wie ich mir das vorgestellt hatte !!!
Ich musste es zwar noch ein bissl umschreiben, damit die Ergebnisse in nem Memo ausgegeben werden, aber das ist ja relativ einfach.

Danke Fabian,
Danke Heiko !

lg, XN

_________________
Wer für den Strick geboren ist, kann im Wasser nicht umkommen.
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Do 03.07.08 12:57 
son progg steht auch von mir im open source...
ich erdreiste mich mal, das zu verlinken...
www.delphi-forum.de/...hprogramm_73739.html
funktioniert genau so wie du das willst...

es durchsucht zwar auch unterverzeichnise aber das kannst du ganz einfach änden...


machst du ne checkbox "Unterverzeichnise mit durchsuchen" aufs formular und dann änderst du folgende code-stelle:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.SucheDir1(search: String; pfad: String);
...
if ((sr.Attr and faDirectory) <> 0) then
  SucheDir1(search, pfad + '\' + sr.name)
else
...
end;


so um:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.SucheDir1(search: String; pfad: String);
...
if ((sr.Attr and faDirectory) <> 0and (CheckBox1.Checked) then
  SucheDir1(search, pfad + '\' + sr.name)
else
...
end;


Tschuldingung, falls ich jetzt nen bisschen dreist war ;)

_________________
1405006117752879898543142606244511569936384000000000.
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Do 03.07.08 13:23 
@Narses: Ja, hast Recht...
ich hab den Code gestern schnell zusammengeschustert, da is mir wohl einiges dabei entgangen :oops:

MfG Bergmann.