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