# FindFirstFile, FindnextFile etc. und ATTRIBUTE



## KILLSMAKER (6. März 2005)

Moin!

ich wollte mal fragen, ob es ein ATTRIBUT für die Dateien, die von den oben genannten Befehlen gefunden wurden, gibt, das nur dateien zulässt, die Ordner oder EXEn sind.
Ich dachte zuerst an,  FILE_ATTRIBUTE_NORMAL, aber dann zeigt er mir ja auch keine Ordner an.

Achso ich benutze:  Microsoft Visual Studio .net  V. 2003  und  Windows XP Home

DANKE


----------



## bauee (6. März 2005)

kennst du dich da etwas aus 

 wie bekomme ich dieses Programm zum Laufen unter VS:NET

/*Download:find.c*/

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>
#include <dos.h>

#define ALL FA_RDONLY|FA_HIDDEN|FA_SYSTEM|FA_LABEL|FA_DIREC|FA_ARCH

int main(int argc, char *argv[])
*{*
int ret;
*struct* ffblk info;
*if*(argc != 2)
*{*
   fprintf(stderr,"Benutzung : %s suchpfad\n",argv[0]);
   exit (1);
*}*

 ret=findfirst(argv[1],&info,ALL);
*while*(ret==0)
*{*
   printf("%20s : %6ld Bytes\n",info.ff_name,info.ff_fsize);
   ret=findnext(&info);
*}*
*return* 0;
*}*    Geben sie jetzt z.B. in der Kommandoz


----------



## Endurion (6. März 2005)

Bei der Maske für FindFirstFile gib als Extension zum Pfad *.exe an, dann bekommst du nur EXE-Dateien, allerdings die Verzeichnisse nicht mehr.

Du kannst entweder zweimal durch die Find-Funktionen loopen oder, da du sowieso noch nachparsen musst (Verzeichniss "." und ".." sind meistens recht witzlos), kannst du ja gleich auf *.* gehen und dann eben nach Extension bzw. Attributen rausfiltern. Aber beides zusammen verträgt sich ohne Nachparsen nicht.


----------



## KILLSMAKER (6. März 2005)

OK. DANKE
Lass ich es halt  zweimal durchlaufen.


----------



## bauee (6. März 2005)

kann mir von euch vielleicht einer sagen wie ich diese findfirst Funktion in VS.NET zum laufen bekomme?


----------



## Endurion (6. März 2005)

Laut MSDN sollte es reichen, <io.h> zu includen. Aber ich meine, die dir.h gibt es bei MSVC nicht.


----------



## bauee (6. März 2005)

mit  io.h mekkert er auch,dass er die Struktur ffblk nicht kennt

 und deswetieren mekkert er:

 c:\dokumente und einstellungen\baueeadmin\eigene dateien\visual studio projects\fharbeitsbereich\allesmögliche\findnext\find.c(27) : warning C4013: 'findfirst' undefiniert; Annahme: extern mit Rückgabetyp int
 c:\dokumente und einstellungen\baueeadmin\eigene dateien\visual studio projects\fharbeitsbereich\allesmögliche\findnext\find.c(27) : error C2065: 'FA_RDONLY': nichtdeklarierter Bezeichner
 c:\dokumente und einstellungen\baueeadmin\eigene dateien\visual studio projects\fharbeitsbereich\allesmögliche\findnext\find.c(27) : error C2065: 'FA_HIDDEN': nichtdeklarierter Bezeichner
 c:\dokumente und einstellungen\baueeadmin\eigene dateien\visual studio projects\fharbeitsbereich\allesmögliche\findnext\find.c(27) : error C2065: 'FA_SYSTEM': nichtdeklarierter Bezeichner
 c:\dokumente und einstellungen\baueeadmin\eigene dateien\visual studio projects\fharbeitsbereich\allesmögliche\findnext\find.c(27) : error C2065: 'FA_LABEL': nichtdeklarierter Bezeichner
 c:\dokumente und einstellungen\baueeadmin\eigene dateien\visual studio projects\fharbeitsbereich\allesmögliche\findnext\find.c(27) : error C2065: 'FA_DIREC': nichtdeklarierter Bezeichner
 c:\dokumente und einstellungen\baueeadmin\eigene dateien\visual studio projects\fharbeitsbereich\allesmögliche\findnext\find.c(27) : error C2065: 'FA_ARCH': nichtdeklarierter Bezeichner
 c:\dokumente und einstellungen\baueeadmin\eigene dateien\visual studio projects\fharbeitsbereich\allesmögliche\findnext\find.c(31) : warning C4013: 'findnext' undefiniert; Annahme: extern mit Rückgabetyp int

 Ich werd noch wahnsinnig! Das kann doch nicht so schwer sein unter Windof mit Dateien zu arbeiten .... grrr


----------



## Tobias K. (6. März 2005)

moin


Lass das struct vor dem ffblk mal weg.


mfg
umbrasaxum


----------



## bauee (6. März 2005)

du meinst ich soll nur schreiben:

  ffblk info;

 was soll das bringen?

 da kommen noch mehr Fehlermeldungen als vorher!


----------



## Tobias K. (6. März 2005)

moin




> was soll das bringen?
> 
> da kommen noch mehr Fehlermeldungen als vorher!



So wie es jetzt ist ist es einfach falsch.
Wenn du struct davor schreibst heisst das das du eine neue Struktur erstellen willst.

Du nimmst einfach ein paar Header Dateien (dir.h und dos.h) und versuchst die im VS .Net zum laufen zu bekommen, aber das geht nicht, da es noch viel mehr abhängigeit zu noch anderen Dateien oder Bibliotheken gibt.


mfg
umbrasaxum


----------



## bauee (6. März 2005)

ja das ist mir auch schon so einigermasen klar, aber es muss doch auch unter VS dafür eine Lösung geben!

 @ KILLSMAKER bei dir scheint es doch zu funkionieren, wie machst du das?


----------

