Veröffentlicht 26. Juli 200520 j Hallo! Ich habe folgendes Problem: Ich möchte aus einem Verzeichnis und seinen Unterverzeichnissen den Filename von allen .mp3 Dateien in einem Char[] abspeichern. (also ich brauche nur ein Char[] und in dem kann der alte Filename immer wieder überschrieben werden.) Ich arbeite mit Windows XP und denke, dass ich die Funktionen FindFirstFile und FindNextFile für dies notwendig ist. Ich habe versucht laut MSDN und anderen Suchen in google dies zu verwirklichen, jedoch bekomm ich nichts hin. Ich bekomme die Funktionen einfach nicht zum laufen... Ich hoffe ihr könnt mir helfen lg Dom
26. Juli 200520 j Ich habe versucht laut MSDN und anderen Suchen in google dies zu verwirklichen, jedoch bekomm ich nichts hin. Wie wär die Suche hier? Da findest du dutzende Beispiele...
26. Juli 200520 j naja... wenn ich das richtig verstehe ist der Pfad der gefundenen Datei in einer WIN32_FIND_DATA-Struktur gespeichert. Ich kann aber leider keinen Thread finden indem angegeben wird wie ich daraus den Pfad auslese und dann in ein Variable vom Typ Char[] einlese. ps.: blöde Frage: welche Datei muss ich headern dass er diese struct erkennt? lg
26. Juli 200520 j ps.: blöde Frage: welche Datei muss ich headern dass er diese struct erkennt? lg MSDN oeffnen, WIN32_FIND_DATA eingeben, runterscrollen zu Requirements, lesen bei Header Goos
26. Juli 200520 j danke hm komischerweise gibts Requirements bei meiner MSDN nicht... habs aber bei der Online-MSDN gefunden. Also nochmal das Problem: WIN32_FIND_DATA w32fd; char path[93]; HANDLE hFind = FindFirstFile("C:\\*.mp3",&w32fd); if ( hFind != INVALID_HANDLE_VALUE) { do { // hier möchte ich den gesamten Pfad der gefundenen Datei // in die Variable path speichern. } while (FindNextFile(hFind,&w32fd)); } FindClose(hFind); achja: was muss ich ändern dass auch die Unterverzeichnisse durchsucht werden?
26. Juli 200520 j // hier möchte ich den gesamten Pfad der gefundenen Datei // in die Variable path speichern. strncpy(path, w32fd.cFileName, 92); Du solltest allerdings das letzte Element des Arrays mit '\0' initialisieren, für den Fall, dass 92 Zeichen nicht ausreichen (was sehr leicht passieren kann). achja: was muss ich ändern dass auch die Unterverzeichnisse durchsucht werden?Das geht nicht automatisch. Du musst die Unterverzeichnisse suchen (in WIN32_FIND_DATA::dwFileAttributes ist das Flag FILE_ATTRIBUTE_DIRECTORY gesetzt) und dann in den gefundenen Verzeichnissen nochmal suchen.
26. Juli 200520 j ich weiß zwar, wie ich überprüfen kann ob das Flag gesetzt ist oder nicht, aber woher bekomm ich dann die Namen der Unterverzeichnisse her? irgendwie check ich das noch nicht...
26. Juli 200520 j ich weiß zwar, wie ich überprüfen kann ob das Flag gesetzt ist oder nicht, if((w32fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) (Edit: sorry, hatte da ein "nicht" gelesen, wo keines war ) aber woher bekomm ich dann die Namen der Unterverzeichnisse her?Aus cFileName, wie die Dateinamen auch. Du musst nur aufpassen, dass du nicht bei . und .. weitersuchst.
9. August 200520 j Du musst nur aufpassen, dass du nicht bei . und .. weitersuchst. hm und wie mach ich das? so funktionierts auf jeden Fall nicht: :confused: if(w32fd.cFileName != "." && w32fd.cFileName != "..")
9. August 200520 j C-Strings (also char-Arrays und char-Zeiger) kann man nicht inhaltlich mit == und != vergleichen. Dabei werden nur die Adressen verglichen. Stichwort strcmp.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.