Verständnisprobleme bei FindFirstFile() & co



  • Hi,

    ich wollte ein Programm schreiben, dass in einem vom User angegebenen Verzeichnis nach Dateien eines bestimmten Typs sucht, zB *.mp3 und *.wma
    Jetzt habe ich so meine Probleme mit FindFirstFile() und FindFirstFileEx(), aus der MSDN-Erklärung werde ich nicht schlau, Boost hat offenbar eine ähnliche Funktion, aber es geht auch nicht 😞

    Mein Hauptproblem an der Sache ist, dass ich mich noch nie mit derartigen Windows-eigenen Funktionen befasst habe, nur Standard-C++. Könnt ihr mir weiterhelfen ?

    Die Funktion, mit der ich Probleme habe, sollte in Pseudo-Pseudocode so aussehen:

    void getfilenames(vector<string> &file, string &wildcard, string &path)
    {
    string buffer;
    //jetzt gehts los
    for(directory_iterator itr(path), end_itr; itr!=end_itr; itr++)
    {
    Dateien anhand von wildcard identifizieren;
    Dateinamen isolieren von Dateiendung und in buffer schreiben;
    file.push_back(buffer);
    }}
    

    Ich hoffe ich habe bei meinem Lösungsansatz nicht mit Zitronen gehandelt^^



  • schau bitte in die FAQ dort gibt es einen eintrag zu besagten api funktionen 🙂



  • Och nöö, ich hab nur in der C++ FAQ geschaut *kopftisch*



  • Ok, ich glaube ich habe es jetzt einigermaßen verstanden 🙂
    Als es in meinem Code nicht funktioniert hat, habe ich mal das Beispiel auf dem FAQ (http://www.c-plusplus.net/forum/viewtopic-var-t-is-39396-and-highlight-is-findfirstfile.html) übernommen.
    Überall dort, wo const chars im Parameter stehen beschwert sich mein Compiler, dass das nicht konvertierbar zum Typ LPCWSTR wäre.
    Was mache ich falsch ?

    IDE ist MS Visual C++ 2010 Beta 2, falls das wichtig ist (funktioniert aber auch auf der 2008er Version nicht)

    //sry für doppelpost



  • So letzter Post:

    Habe gerade das hier gefunden und das hat mir sehr weitergeholfen:
    http://godpatterns.com/article/how-to-list-files-in-a-directory-in-c

    Fand ich persönlich verständlicher als das Beispiel im FAQ


Anmelden zum Antworten