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-Bitdas 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 gleicheCode 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