Unterverzeichnisse aus Verzeichnis auslesen



  • Hallo

    Im FAQ hab ich zwar etwas gefunden (http://www.c-plusplus.net/forum/viewtopic.php?t=39284&start=0&postdays=0&postorder=asc&highlight=), jedoch kann ich mit dem nicht viel anfangen

    Ich habe folgendes Problem:

    Der Benutzer kann in meinem Programm in einer DirectoryListBox ein Verzeichnis auswählen. Nun möchte ich, alle Unterverzeichnisse in diesem Verzeichnis auslesen, bzw. in eine ComboBox schreiben. Ich hoffe jemand kann mir sagen, wie ich die Unterverzeichnisse bzw. ihre Namen aus dem angegebenen Verzeichnis auslesen kann.



  • Hi,

    Stichwort Rekursion.
    Hier mal ein Beispiel. Es wird nach einem bestimmten Verzeichnis gesucht. Viel Spass beim Anbpassen 😉

    /**********************************************************************/
    /*  Sucht in "StartDir" und allen untergeordneten Verzeichnissen nach */
    /*  dem Verzeichnis "File" und schreibt als Ergebnis den kompletten   */
    /*  Pfad in "ResultPath"                                              */
    /*  Rückgabewert: true = Suche ok                                     */
    /*                false = Suche nicht ok                              */
    /**********************************************************************/
    
    bool SearchFile(char* StartDir, char* File, char* ResultPath)
    {
     bool 		done;
     struct 		ffblk ffblk;
     char			OldDir[256],
                AktDir[256];
    
     strcpy(AktDir, StartDir);
     chdir(StartDir);
    
     //Erstes gültiges Verzeichnis suchen
     done = findfirst("*.*", &ffblk, FA_DIREC);
     while ( ( (strcmp(ffblk.ff_name, ".") == 0) ||
     			  (strcmp(ffblk.ff_name, "..") == 0) ) &&
               (!done) )
       done = findnext(&ffblk);
    
     while (!done)
       {
       //gesuchtes Verzeichnis gefunden?
       if (strcmp(File, ffblk.ff_name) == 0)
         {
         strcpy(ResultPath, AktDir);
         strcat(ResultPath, "\\");
         strcat(ResultPath, ffblk.ff_name);
         return true;
         }
       //Irgendein Verzeichnis gefunden?
       if ( (!done) && (ffblk.ff_attrib == FA_DIREC) )
         {
         strcat(AktDir,"\\");
         strcat(AktDir, ffblk.ff_name);
         getcwd(OldDir, 1024);
         if ( SearchFile(AktDir, File, ResultPath) )
           return true;
         chdir(OldDir);
         strcpy(AktDir, OldDir);
         }
       done = findnext(&ffblk);
       }
     return false;
    }
    


  • GaZmo schrieb:

    Im FAQ hab ich zwar etwas gefunden [...], jedoch kann ich mit dem nicht viel anfangen

    Die Kommentarzeile "// ist ein Verzeichnis" sagt dir nichts!?



  • ähm, hätte ich es genauer angeschaut, hätte es mir wohl etwas gesagt, sorry für den wieder mal überflüssigen post...

    Danke JoKo für deine Hilfe



  • Jansen schrieb:

    GaZmo schrieb:

    Im FAQ hab ich zwar etwas gefunden [...], jedoch kann ich mit dem nicht viel anfangen

    Die Kommentarzeile "// ist ein Verzeichnis" sagt dir nichts!?

    Jansen: Wozu denn lesen, wenn mans einfach kopieren kann? (o;

    -junix


Anmelden zum Antworten