![]() |
Festplatten nach Datei durchsuchen
Folgendendes nutz ich um auf C:\ nach allen Dateien zu suchen die test.txt
heißen:
Delphi-Quellcode:
jetzt das problem, ich will nicht nur auf C:\ danach suchen sondern auf allen vorhandenen Festplatten (nicht auf Disketten / CD-Laufwerken !)
procedure SearchFiles(Ext,StartDir: string;Recursive: Boolean; List: TStrings);
var Rec: TSearchRec; i: integer; Dir : string; begin Dir := StartDir; if AnsiLastChar(Dir) <> '\' then Dir := Dir + '\'; i := FindFirst(StartDir+'*',faAnyFile,Rec); while i = 0 do begin Application.ProcessMessages; //optional if Pos(Ext,Rec.Name) > 0 then List.Add(Dir+Rec.Name); if ((Rec.Attr and faDirectory) > 0) and (Rec.Name <> '.') and (Rec.Name <> '..') and Recursive then begin if AnsiLastChar(Rec.Name) <> '\' then Rec.Name := Rec.Name + '\'; SearchFiles(Ext,StartDir+Rec.Name,Recursive,List); end; i := FindNext(Rec); end; FindClose(Rec); end; procedure TForm1.Button1Click(Sender: TObject); begin SearchFiles('test.txt','C:\',true,ListBox1.Items); end; Wie mache ich das am besten ?! |
Re: Festplatten nach Datei durchsuchen
Du könntest mittels
![]() |
Re: Festplatten nach Datei durchsuchen
hab ich vorhin schon versucht, hab dann die festplatten laufwerke in
einer StringList bekommen und bin dann auch hängen geblieben, weil ich keinen schimmer hab wie ich daraus dann wieder die einzelnen LW-Buchstaben etxrahiere :oops: |
Re: Festplatten nach Datei durchsuchen
Delphi-Quellcode:
(ungetestet)
var i: integer;
SL: TStringList; ... for i := 0 to SL.Count - 1 do SearchFiles('test.txt',SL.Strings[i],true,ListBox1.Items); |
Re: Festplatten nach Datei durchsuchen
*smile*
das funktioniert schon mal :) danke ! will aber gleichzeitig noch nach einer zweiten datei suchen, siehe unten.... dabei bekomm ich dann jedoch die fehlermeldung "Listenindex überschreitet das Maximum(5)" wie verhinder ich das ? :oops:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; SL: TStringList; begin SL:=festplatten; for i := 0 to SL.Count - 1 do SearchFiles('test.txt',SL.Strings[i],true,ListBox1.Items); SearchFiles('test2.txt',SL.Strings[i],true,ListBox1.Items); end; |
Re: Festplatten nach Datei durchsuchen
Hi!
Du hast ein begin...end vergessen. Bei ,ehr als einer Anweisung muss die For-Schleife selbiges beinhalten.
Delphi-Quellcode:
Ciao Frederic
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; SL: TStringList; begin SL:=festplatten; for i := 0 to SL.Count - 1 do begin SearchFiles('test.txt',SL.Strings[i],true,ListBox1.Items); SearchFiles('test2.txt',SL.Strings[i],true,ListBox1.Items); end; end; |
Re: Festplatten nach Datei durchsuchen
Delphi-Quellcode:
Wenn du mehr als eine Anweisung hast, musst du diese mit Begin...end einschließen.
for i := 0 to SL.Count - 1 do
SearchFiles('test.txt',SL.Strings[i],true,ListBox1.Items); SearchFiles('test2.txt',SL.Strings[i],true,ListBox1.Items);
Delphi-Quellcode:
for i := 0 to SL.Count - 1 do
begin SearchFiles('test.txt',SL.Strings[i],true,ListBox1.Items); SearchFiles('test2.txt',SL.Strings[i],true,ListBox1.Items); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 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-2025 by Thomas Breitkreuz