Moin Gregor,
ich hab' Deine Methode Suche mal überarbeitet und kommentiert
Delphi-Quellcode:
procedure TForm1.Suche (ext: string; pfad: String);
var sr: TSearchRec;
r: Integer;
begin
r:= FindFirst( pfad + '\*.*', faAnyFile,sr);
if r = 0 then begin // nur wenn FindFirst erfolgreich war, gibt's auch was zu schliessen
try // Resourcenschutzblock eingebaut
while r = 0 do
begin
// falsch, da ein Datei-/Verzeichnisname auch mit . beginnen kann
// es muss explizit auf . und .. geprüft werden
// If Copy(sr.Name, 1, 1) <> '.' then
if (sr.Name <> '.') and (sr.Name <> '..') then
begin
// gefundenes Attribut ausmaskieren und mit gewünschtem vergleichen
if (sr.Attr and faDirectory) = faDirectory then
// If (sr.Attr <> 0) and (faDirectory <> 0) then
begin
Suche(ext, Edit2.Text + '\' + sr.Name);
ListBox2.Items.Add(pfad + '\' + sr.Name);
end
else
if AnsiUpperCase(ExtractFileExt(sr.Name)) = '.'+AnsiUpperCase(ext) then
// If System.Copy (sr.Name, Pos('.' , sr.Name), 4) = '.' + ext then
ListBox1.Items.Add(pfad + '\' + sr.Name);
end;
Application.ProcessMessages;
r:= FindNext(sr);
end;
finally
FindClose(sr);
end;
end;
end;
das mit dem str3 hab' ich nicht verstanden.
Extensions können beliebig lang sein.