Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

Delphi 5 - Prozedur für Dateisuche

The_Wise / 7 Antworten / Flachansicht Nickles

Hi !
Ich brauche für ein Programm eine Dateisuche, das mir beispielsweise alle Dateien mit der Endung TXT in einer ListBox anzeigt.
Mein Problem ist, das die Prozedur die ich gemacht habe, nicht alles findet.

Hier die Prozedur:

procedure TMainForm.SearchFile (Pfad: String);
var sr: TSearchRec;
r: Integer;
begin
r:= FindFirst(Pfad + \'\\*.*\', faAnyFile, sr);
while r = 0 do
begin
if Copy(sr.name, 1, 1) \'.\' then
begin
if (sr.attr0) and (faDirectory0) then
SearchFile(Pfad + \'\\\' + sr.name)
else
if Uppercase(System.Copy(sr.name, Pos(\'.\',sr.name), 4)) = \'.TXT\' then
ListBox.Items.Add(Pfad + \'\\\' + sr.name)

end;
Application.ProcessMessages;
r:=FindNext(sr);
end;
FindClose(sr);

end;





Ich verwende rekursive Programmierung. Meinen Fehler habe ich noch nicht entdeckt. Kann mir jemand helfen ?

bei Antwort benachrichtigen
mr.escape Borlander „Da hat sich der Fehlerteufel aber wieder böse bei mir zugeschlagen... Macht...“
Optionen
Da hat sich der Fehlerteufel aber wieder böse bei mir zugeschlagen...
Na und? Passiert doch jedem mal. Und solange nix kaputt geht...

0
Dass könnte allerdings bei der Überprüfung von mehreren Attributen ärger bereiten...
könnte schon, bei mehreren attributen wird man aber sowieso angeben müssen, welche vorhanden sein müssen, welche nicht vorhanden sein dürfen und welche egal sind. Hier ging es nur um verzeichnisse.

Doppelt suchen bedeutet auch doppelten Plattenzugriff und der ist bekanntlich seeeehr langsam.
Nicht wirklich, denn die suche findet zweimal direkt nacheinander innerhalb des selben verzeichnisses statt und wird sicher aus dem cache bedient (sind ja nur die einträge und nicht die daten, d.h. durchschnittlich einige zig bytes, die ja wohl locker im cache verwaltet werden können, vor allem weil sie ja eben gerade verwendet wurden). Die funktion bleibt ja fast gleich, rekursiv, etc. aber zuerst werden die ordner gesucht und anschliessen die nicht ordner. Wenn man das zeug danach sortiert, ist es aber egal.

mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen