Datei suchen
-
Hallo,
bin gerade dabei eine DLL zu erstellen, die nach einer Datei in einem angegebenen Verzeichnis suchen soll.
Beispiel:
Eine Variable ist mit folgendem Wert gefüllt --> C:/tmp/test.txtIch übergebe diesen Wert der DLL und diese soll in dem Verzeichnis C:/tmp nach der Datei test.txt suchen.
Weiss einer von Euch wie ich nach einer Datei in einem Verzeichnis suche? Hab bis jetzt zu diesem Thema nichts gefunden.
Danke und Gruß
Elle
-
Wenn Du nur *eine* Datei suchst, dann nimm doch
if (_access("PfadZuDati", 0) == 0) printf("Datei existiert");
Ansonsten:
http://msdn.microsoft.com/library/en-us/fileio/fs/listing_the_files_in_a_directory.asp
-
Danke für den Hinweis, bin gerade dabei das mit dem FindFirstFile auszuprobieren.
Es funktioniert soweit, wenn ich den Pfad manuell eingebe. Sobald ich den Pfad aber an eine Variable übergebe und diese dann die jeweilige Stelle einfüge, findet er die Datei nicht mehr.
Hier mein Code:
extern "C" __declspec(dllexport) void CdwDLLPut(long id, long buflen, char* buffer) { //Implementierung HANDLE findFile; WIN32_FIND_DATA wfd; //Nach der Datei suchen und Ergebniss an "&wfd" uebergeben findFile = FindFirstFile(buffer,&wfd); //fHandle = FindFirstFile("C:\\tmp\\cdwcache\\cdps-108.xml",&wfd); }
Im "buffer" befindet sich genau der gleiche Pfad drin wie in dem auskommentierten Code!
Was mach ich falsch?
Gruß
-
Bist du sicher, daß dort das selbe drinsteht? (da du nicht geschrieben hast, wie du die Funktion aufrufst - die doppelten \ benötigst du nur, wenn du eine String-Konstante im Quelltext angibst)
-
Wenn ich eine MessageBox ausgebe steht genau der gleiche Pfad drin!
Kann ich auch auf eine andere Art und Weise prüfen was sich im "buffer" befindet?
-
Eleonora schrieb:
Wenn ich eine MessageBox ausgebe steht genau der gleiche Pfad drin!
Mit \\ oder \ ?
-
Im "buffer" stehen ebenfalls zwei "\" drin.
Mir wäre es allerdings lieber mit nur einem " \ ", nur hat das nicht funktioniert gehabt, drum hab ich aus dem einen zwei gemacht.
-
So wie es aussieht werden in die Variable "buffer" nach der Dateiendung noch Leerzeichen mitausgegeben.
Ich habe einen festen Pfad an meine Variable übergeben und habe ab der letzten Stelle eine Terminierung auf 0 gemacht. So hat es dann auch funktionert.
buffer[17] = '\0';
Jetzt dachte ich mir, ich bau eine Schleife ein die Rückwärts zählt und von hinten meine Spaces über die 0 Terminierung verschwinden lässt. Gibt es hierfür vielleicht auch noch ne andere Lösung?