Datei suchen
-
Hallo nochmal,
also ich habe z.B. ein edit-feld. Da trägt man einen Dateinemen inkl. Endung ein. Auf einen Buttondruck soll auf einer ausgewählten Festplatte nach dieser Datei gesucht werden.
Wenn die Datei vorhanden ist soll in einem Memo oder so, ihr Ort, ihr Name , die Dateigröße, und das Erstelldatum angezeigt werden.
Wie stell ich am besten sowas an?
-
vielleicht indem Du zuerst einmal in der API-Hilfe blätterst??? Haste das schon gemacht?
-
häh API? nix API für sowas nötig!
siehe FindFirst, FindNext und FindClose in der Hilfe, hier im Forum und hier in den FAQ.
-
Ok, danke. Habe ich gefunden.
-
So ich habe das Beispiel in der Faq von Anfreas verwendet. Aber ich habe ein Problem, wenn ich als Startverzeichnis C:\\ angebe und in der Funktion bei dem FindFirst anstatt des . zB ein *.txt angebe, dann sucht er nur in C:\ nach *.txt Dateien aber nicht in den Unterverzeichnissen. Das mit den Unterverzeichnissen klappt nur wenn man . angibt. Woran liegt das?
-
Weil es vermutlich kein Unterverzeichniss gibt welches .txt heisst
-
Aber in der Hilfe steht das an die Stelle die Datei angegeben werde muß. Es gibt ja auch kein Unterverzeichnis das . heißt. Es wird ja das zu durchsuchende Verzeichnis angegeben und die Datei, oder irre ich mich da?
Wo müsste ich denn sonst angeben wenn ich nur nach txt Dateien suchen möchte?Es können auch Platzhalterzeichen verwendet werden. So bezeichnet beispielsweise "c:\test\." alle Dateien im Verzeichnis C:\TEST.
[ Dieser Beitrag wurde am 23.03.2003 um 13:25 Uhr von Heavenfighter editiert. ]
-
Der Stern bedeutet, dass dort kein Zeichen oder ein Zeichen oder mehrere Zeichen stehen können. Bei *.txt wird aber explizit eine Endung mit genau den drei Zeichen t, x und t verlangt.
Dieser Filter ist ja nicht die eigentliche Suche, der dient nur zur Einschränkung derselben. Die Auswertung, ob die aktuell untersuchte Datei dem gewünschten Muster entspricht, erfolgt erst im nächsten Schritt. Im FAQ-Beispiel ist die Prüfung ganz simpel gehalten: wenn es sich um ein Verzeichnis handelt wird dort "hineingetaucht", wenn nicht, dann wird der Dateiname direkt in die Liste aufgenommen.
Zusätzliche Filter müsstest du also an dieser Stelle selbst implementieren.
-
Ach so. In der Zwischenzeit habe ich mir so was ähnliches auch gedacht. Wie sieht den so eine Filterung wirklich gut aus? Ich mach es im Moment mit Substring vom Dateinamen.
int lang = sr.Name.AnsiPos(".")+1; String ende = sr.Name.SubString(lang,3); if(strcmp(ende.c_str(),"txt") == 0 || strcmp(ende.c_str(),"TXT") == 0)
Nur so bekomme ich leider auch Dateien wie zB Dokument.txt.bak angezeigt. Wie kann ich das verhindern?
-
String srchExt = ".txt"; if (LowerCase(ExtractFileExt(sr.Name)) == srchExt) ShowMessage("Gotcha!");
-
Hey das ist super vielen Dank.