Auslesen eines Verzeichnisses



  • Mit folgender Funktion lese ich ein Verzeichnis aus:

    int getFiles()
    {
        WIN32_FIND_DATA dir;
        HANDLE fhandle;
        char directory[] = ".\\*.*"; 
    
        char client[250];
    
        if ((fhandle = FindFirstFile(directory, &dir)) != INVALID_HANDLE_VALUE) {
            do {
                if (dir.cFileName[1] != "." && dir.cFileName[2] != ".")
                SendMessage(clientsCol, LB_ADDSTRING, 0, (LPARAM)dir.cFileName);                            
            } while (FindNextFile(fhandle, &dir));
        }
        FindClose(fhandle);
    }
    

    Ich möchte nun aber die ersten beiden "Datein" nicht ausgeben. Sprich den Punkt der das aktuelle Verzeichnis signalisiert und die 2 Punkte, welche das vorige Verzeichnis signalisieren. cFileName ist doch vom Typ Char, wieso klappt dann folgende if-Bedingung nicht?:

    if (dir.cFileName[1] != "." && dir.cFileName[2] != ".")

    Grüße



  • T!P-TOP schrieb:

    wieso klappt dann folgende if-Bedingung nicht?

    klar klappt sie, falls das 2. und das 3. Zeichen ein '.' ist, wird es nicht ausgegeben.



  • Habs mal in...

    if (dir.cFileName[0] != "." && dir.cFileName[1] != ".")
    

    ...umgeändert.

    Und Nein, es klappt nicht. Es kommt zu folgenden Listelementen:

    .
    ..
    test.txt
    foo.txt
    bar.txt
    


  • Weil du " statt ' benutzt.



  • Ja, tatsächlich, daran lags... Danke dir 🙂


Anmelden zum Antworten