Frage

Ich verwende die folgenden für eine Datei als Makro definiert DB_CONFIG_FILE_PATH_1 zu suchen.

wchar_t filename[100];
SearchPath( L".\\", DB_CONFIG_FILE_PATH_1, NULL, 100, filename, NULL);

Wenn die Datei in C: \ Verzeichnis, es gefunden wird. Aber, wenn die Datei in einem seiner Unterverzeichnisse ist die Funktion, die sie nicht finden.

Kann einige erklären, wie für eine Datei mit der obigen Funktion alle Laufwerke einschließlich Unterverzeichnisse suchen.

Ich bin nicht mit Findfirstfile-Funktion, weil ich nicht in der Lage bin den Pfad zur Datei, obwohl die Funktion zurück in die Datei behandeln abzurufen.

Um es möchte ich vollständigen Pfadnamen einer Datei. Ich kenne den Namen der Datei, aber nicht wissen, wo es auf der comp ist.

War es hilfreich?

Lösung

Für Unterverzeichnisse in nativen Code auf Win32 suchen, müssen Sie es selbst tun, mit Findfirstfile und dann rekursiv in Unterverzeichnisse.

Der Rückgabewert von Findfirstfile ist keine Datei-Handle - die Dateiinformationen enthalten ist, in der WIN32_FIND_DATA Struktur zurückgegeben. Der Griff ist in Anrufen verwendet, um Findnextfile um die Suche fortzusetzen. Um einen vollständigen Pfadnamen bei der Suche zu erhalten, müssen Sie den Überblick behalten, welche Verzeichnis Sie sich gerade befinden, und fügen Sie die erkannten Verzeichnisnamen auf den Pfad.

SearchPath sucht nur in der Umgebungsvariable PATH oder dem ersten Parameter, falls vorhanden und Verzeichnisse nicht suchen.

Andere Tipps

GetCurrentDirectory() sollte sagen Sie den Pfad:

http://msdn.microsoft.com/ en-us / library / aa364934 (VS.85) aspx

und das zweite Argument von FindFirstFile():

http://msdn.microsoft.com/ en-us / library / aa364418 (VS.85) aspx

, die eine WIN32_FIND_DATA Struktur sollten Sie den Namen der Datei, sagen:

http://msdn.microsoft.com/ en-us / library / aa365740 (VS.85) aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top