a1nett Geschrieben 30. August 2001 Teilen Geschrieben 30. August 2001 hallo kann mir hier vielleicht jemand helfen? mein problem: soll alle dateien auf einer festplatte raussuchen die "projektID.xml" heißen. leider hab ich gar keinen plan wie man das macht. hab schon einen teil quelltext. mir fehlt nur der algorithmus der die einzelnen orderner durchsucht. wie kann man das in c++ realisieren? kann immer nur die ordner im root durchsuchen aba keine unterordner. benutzt man dafür die funktionen _findfirst und _findnext? wer was weiß bitte unbedingt melden :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Dagegen Geschrieben 30. August 2001 Teilen Geschrieben 30. August 2001 Auf welchem System ???? muss es umbedingt C++ sein ??? ansonsten kannst du ja bei Unix einfach find einsetzten (als shell skript, das von deinem C-Programm aufgerunfen wird) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
InsanityX Geschrieben 30. August 2001 Teilen Geschrieben 30. August 2001 Ja, es muß C++ sein (zumindest bei mir habe das gleiche Problem ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MadMatrix Geschrieben 30. August 2001 Teilen Geschrieben 30. August 2001 Tja, die gibt's ein Problem. Die Windows-File-Funktionen bieten keine Routinen zur rekursiven Dateisuche. Vorschlag (mit _findfirst() und _findnext()): Du musst im Stammverzeichnis anfangen und (*)überprüfst dort, ob die datei vorhanden ist. Ist dies der Fall, merkst du dir den Pfad, und durchsucht dann das Verzeichnis nach Verzeichnissen. In jedem Verzeichnis startest du dann wieder bei (*). Tip: Such im MSDN nach SCANDIR.C !!! Viel Spaß, werd mal schauen, ob ich dass nicht besser hinkriege als Mikroschrott im Beispiel! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
InsanityX Geschrieben 30. August 2001 Teilen Geschrieben 30. August 2001 Das wäre net, habe gerade erst mit C++ angefangen und bin da nicht sooo der Held... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MadMatrix Geschrieben 30. August 2001 Teilen Geschrieben 30. August 2001 Na dann, hier mal ein Versuch: #include "stdio.h" #include "io.h" #include "string.h" #include "afxcoll.h" void AddResult(const char* lpszPath, const char* lpszFilename) { printf("%s%s\n", lpszPath, lpszFilename); } void SearchDirectory(const char* lpszDirectory, const char* lpszFilename) { _finddata_t finddata; long Handle; // dateien suchen char* lpszWildcard = new char[strlen(lpszDirectory) + strlen(lpszFilename) + 1]; strcpy(lpszWildcard, lpszDirectory); strcpy(lpszWildcard + strlen(lpszDirectory), lpszFilename); Handle = _findfirst(lpszWildcard, &finddata); if (Handle != -1) do { AddResult(lpszDirectory, finddata.name); } while (_findnext(Handle, &finddata) == 0); _findclose(Handle); delete lpszWildcard; // unterverzeichnisse suchen lpszWildcard = new char[strlen(lpszDirectory) + strlen("*.*") + 1]; strcpy(lpszWildcard, lpszDirectory); strcpy(lpszWildcard + strlen(lpszDirectory), "*.*"); Handle = _findfirst(lpszWildcard, &finddata); if (Handle != -1) do { if ((finddata.attrib & _A_SUBDIR) && (finddata.name[0] != '.')) { char* lpszSubDir = new char[strlen(lpszDirectory) + strlen(finddata.name) + strlen("\\") + 1]; strcpy(lpszSubDir, lpszDirectory); strcpy(lpszSubDir + strlen(lpszDirectory), finddata.name); strcpy(lpszSubDir + strlen(lpszDirectory) + strlen(finddata.name), "\\"); SearchDirectory(lpszSubDir, lpszFilename); delete lpszSubDir; } } while (_findnext(Handle, &finddata) == 0); _findclose(Handle); delete lpszWildcard; } int main(int argc, char* argv[]) { SearchDirectory("C:\\Programme\\Microsoft Visual Studio\\", "*.cpp"); return 0; } Ich bin davon ausgegangen, dass du das ohne MFC machst, also hab ich dass mal "in richtigem C" geschrieben. Ich hoffe, dein Stack ist groß genug für ein paar rekursive Aufrufe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
InsanityX Geschrieben 30. August 2001 Teilen Geschrieben 30. August 2001 Muchas Gracias, habin 17 Min feierabend, deshlab werde ich das morgen testen... *froi* // Freitag morgen, fast 9 in Deutschland: FUNKTIONIERT :cool: <FONT COLOR="#a62a2a" SIZE="1">[ 31. August 2001 08:58: Beitrag 1 mal editiert, zuletzt von InsanityX ]</font> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
a1nett Geschrieben 31. August 2001 Autor Teilen Geschrieben 31. August 2001 hat bei mir auch geklappt musste aba ganz schön was weg lassen danke dann Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.