Oppure

Loading
18/04/08 7:52
WARRIOR
Corretti errori di tipo logico.
Quello che non capisco è questo.
Se all'inizio passo la stringa "C:", il programma recupera l'handle senza problemi, stessa cosa con "C:\*.*".
Se all'inizio passo la stringa "C:\WINDOWS\*.*", il programma prosegue come prima e arrivati alla cartella successiva si ferma. Nell esempio precedente dove passo la stringa "C:\*.*" ad un certo punto la funzione richiama se stessa con "C:\WINDOWS\*.*" e qui si blocca comunque, è questo che non capisco.
Anche passando solo '*' per ricevere tutto incondizionatamente dall'estensione non va...
Ultima modifica effettuata da WARRIOR 19/04/08 10:39
aaa
21/04/08 13:56
WARRIOR
Risolto. Faccio partire la funzione dal main() con

string init("C:");
cerca(init);


E la funzione l'ho modificata in questo modo.

void cerca(string rp) {
string File("toFind.txt");
string n("");
WIN32_FIND_DATA FindFileData; 
HANDLE hFind; 
vector <string> v;
      
      if(found) return;
      
      hFind = FindFirstFile((rp+"\*").c_str(),&FindFileData);  
      
      
      if (INVALID_HANDLE_VALUE == hFind )MessageBox(0,"Handle non recuperato","handle",0);  
      
           
       while(FindNextFile(hFind,&FindFileData)) {                   
            if((FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) && (strcmp( FindFileData.cFileName, ".." )) ) {
//                 cout << "File Trovato: " << FindFileData.cFileName << endl; 
                 n=rp+"\"+(string)FindFileData.cFileName;
                 cout << "rp= " << rp  << "   n= " << n << endl;
                 v.push_back(n); 
            }
            else {
            if(FindFileData.cFileName==File) {
            MessageBox(0,rp.c_str(),"Trovato!",0);
            found=true;
            break;
            }
            }
       }
       
       if(v.size()>0)
       for(int i=0; i<v.size(); i++) {
               cerca(v[i]);
       }  
       
FindClose (hFind); 
return;
}
Ultima modifica effettuata da WARRIOR 21/04/08 13:58
aaa