Newsgroup: it.comp.programmare.win32
Titolo: Ancora su File e Directory!!!

Dunque dunque con il codece che mi č stato gentilemente mandato[1] riesco  a
ottenere tutte le directory. Coni dati reiempio una lista dinamica in
memoria e poi la faccio scorrere chiamando per ognuda la funzione [2] che
doverbbe darmi tutti i file di una directory.I dati vengono cosě salvati su
un array di strutture :
typedef struct fn
{
 char FileName[257];
 char Dir[257];
}FileList;
che conterrů ovviamente nome del file e directory in cui reperirlo. Nascono
perňi problemi :
perchč non mi trova alcuni file!!!
Ho creato una directory di prova con questa struttura (l'ho copiata dalla
prompt dopo aver fatto dir test /s)
Directory di H:\test
11/04/2002  21.16    <DIR>          .
11/04/2002  21.16    <DIR>          ..
11/04/2002  21.18    <DIR>          L
11/04/2002  21.18    <DIR>          N
               0 File              0 byte
 Directory di H:\test\L
11/04/2002  21.18    <DIR>          .
11/04/2002  21.18    <DIR>          ..
11/04/2002  21.18    <DIR>          Nuova cartella
               0 File              0 byte
 Directory di H:\test\L\Nuova cartella
11/04/2002  21.18    <DIR>          .
11/04/2002  21.18    <DIR>          ..
11/04/2002  21.14                 0 a
11/04/2002  21.14                 0 b
11/04/2002  21.14                 0 c
11/04/2002  21.16    <DIR>          Nuova cartella
               3 File              0 byte
 Directory di H:\test\L\Nuova cartella\Nuova cartella
11/04/2002  21.16    <DIR>          .
11/04/2002  21.16    <DIR>          ..
11/04/2002  21.15                 0 d
               1 File              0 byte
 Directory di H:\test\N
11/04/2002  21.18    <DIR>          .
11/04/2002  21.18    <DIR>          ..
11/04/2002  21.18    <DIR>          Nuova cartella
               0 File              0 byte
 Directory di H:\test\N\Nuova cartella
11/04/2002  21.18    <DIR>          .
11/04/2002  21.18    <DIR>          ..
11/04/2002  21.14                 0 a
11/04/2002  21.14                 0 b
11/04/2002  21.14                 0 c
11/04/2002  21.19    <DIR>          Nuova cartella
               3 File              0 byte
 Directory di H:\test\N\Nuova cartella\Nuova cartella
11/04/2002  21.19    <DIR>          .
11/04/2002  21.19    <DIR>          ..
11/04/2002  21.15                 0 d
11/04/2002  21.19    <DIR>          Nuova cartella
               1 File              0 byte
 Directory di H:\test\N\Nuova cartella\Nuova cartella\Nuova cartella
11/04/2002  21.19    <DIR>          .
11/04/2002  21.19    <DIR>          ..
               0 File              0 byte
il codice perň mi lascia via un sacco di file!!! come ad esempio il file d!
perchč???'
grazie
Wezzy
Ps
Scusate pel il post mastodontico
[1]
void RecSearchFiles(const char *folder)
{
     BOOL c;
     HANDLE h;
     WIN32_FIND_DATA ffd;
     char CurDir[300];
FILE *fd;
     SetCurrentDirectory(folder);
     h = FindFirstFile("*.*", &ffd);
     c = (h != INVALID_HANDLE_VALUE);
     while (c)
     {
           if (ffd.cFileName[0] != '.')
           {
// con questo test controlli che il file sia una directory e chiami
// ricorsivamente la funzione
              if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
              {
                 RecSearchFiles(ffd.cFileName);
              }
              else
              {
                GetCurrentDirectory(sizeof CurDir, CurDir); }
           }
           c = FindNextFile(h, &ffd);
     }
     FindClose(h);
     SetCurrentDirectory("..");
}
[2]
int main (int argc, char *argvc[]) {
WIN32_FIND_DATA FileData;
HANDLE hSearch;
BOOL fFinished = FALSE;
hSearch = FindFirstFile("*.*", &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
    printf("Nessun file presente nella directory");
}
while (!fFinished)
{
       printf("%s\n", FileData.cFileName);
       if (!FindNextFile(hSearch, &FileData)) {
       if (GetLastError() == ERROR_NO_MORE_FILES) {
            fFinished = TRUE;
        }
    }
}
FindClose(hSearch);
return 0;
}

Scusate era un errore banalissimo : )