findnext listen alle Ordner und Dateien, will aber nur ordner



  • Hi,

    habe ein problem und komme nicht weiter,
    die findnext funktion der dir.h funktioniert nicht so wie sie das soll.

    FA_RDONLY Nur-Lesen-Attribut
    FA_HIDDEN Verborgene Datei
    FA_SYSTEM Systemdatei
    FA_LABEL Datenträgername
    FA_DIREC Verzeichnis
    FA_ARCH Archiv-Bit

    das sind die konstanten um das gewünschte anzeigen zu lassen, für die "dateien einzeln" und "alle element (dateien und ordner)" geht das. nur für "die einzelnen order" nicht.

    dateien und ordner

    findfirst("*.*",&ffblk,FA_DIREC|FA_RDONLY|FA_HIDDEN|FA_SYSTEM|FA_ARCH  );
    

    dateien

    findfirst("*.*",&ffblk, FA_RDONLY|FA_HIDDEN|FA_SYSTEM|FA_ARCH  );
    

    NICHT nur ordner (sondern alles)

    findfirst("*.*",&ffblk, FA_DIREC  );
    

    Liegt das vielleicht an den ODER-Verknüpfungen muss ich die anderen vielleicht ausschließen, weil datein werden ja immer angezeigt, wie wird das gemacht, die bitoperatoren sind mir noch ein rätzel.
    Alternativ kann man für die konstanzen auch int werte einsetzen, aber resultat ist das gleiche

    Code zum testen
    int main(void)
    {
    struct ffblk ffblk;
    int done;
    chdir("C:\");
    printf("Directory listing of .\n");
    done = findfirst(".",&ffblk, FA_DIREC|FA_RDONLY|FA_HIDDEN|FA_SYSTEM|FA_ARCH );
    while (!done)
    {
    printf("%s\n", ffblk.ff_name);
    printf("%d\n\n", ffblk.ff_attrib);
    done = findnext(&ffblk);
    }
    getch();
    return 0;
    }
    [code]



  • es liegt auf jeden fall daran, die zahl 31 bringt nur "system" der in c:\ besondere bedeutung hat,

    ABER WIE MACH ICH DAS RICHTIG, nur die ordner



  • Dieser Thread wurde von Moderator/in AJ aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • keiner eine lösung, oder ne andere möglichkeit auf ordner zu testen, habe lediglich mit chdir oder opendir getestet ob man reinspringen kann, dann ist es ein ordner, aber naja so wirklich toll ist das ja nicht



  • pradox2k schrieb:

    keiner eine lösung, oder ne andere möglichkeit auf ordner zu testen, habe lediglich mit chdir oder opendir getestet ob man reinspringen kann, dann ist es ein ordner, aber naja so wirklich toll ist das ja nicht

    Anders gehts aber nicht.
    Ich kenne jedenfalls keine andere leichte Methode. (Alles andere würde genaue Kenntnis vom Dateisystem verlangen; ist also viel zu umständlich.)



  • Ist vielleicht nicht ganz das wahre, aber probier mal das:

    //dann ist es ein Ordner(weis aber nicht ob das immer und 100% hinhaut)
    if( FData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )

    und FData währe dann Deine Variable vom Typ WIN32_FIND_DATA

    rendner


Anmelden zum Antworten