Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben
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

Geschrieben

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?

Geschrieben

// 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.
Geschrieben

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...

Geschrieben
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.
  • 2 Wochen später...
Geschrieben
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 != "..")

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...