Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    41

    [C++] problema FindFirstFile,FindNextFile

    codice:
    	char pathRicercaProduzioni[500];
    	string controlloEsistenza;
    	HANDLE hFind = INVALID_HANDLE_VALUE;
    	WIN32_FIND_DATA ffd; //contiene le informazioni del file o directory puntata
    	strcpy(pathRicercaProduzioni,pathDirProduzioni);
    	strcat(pathRicercaProduzioni,"*");
    	if(hFind = FindFirstFile((LPCSTR)pathRicercaProduzioni, &ffd))//troviamo la prima produzione 
    	{
    		FindNextFile(hFind, &ffd);// salto la prima directory (.)
    		if(FindNextFile(hFind, &ffd)!= 0)// salto la seconda directory(..)
    		{	do
    			{
    				if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//se il file preso in esame è una directory...
    				{
    					controlloEsistenza.assign(ffd.cFileName);
    					controlloEsistenza.append(".txt");
    					if(fopen(controlloEsistenza.c_str(),"r") == NULL)
    					{
    						cout<<"NON ESISTE";
    				
    					}
    					else
    						cout<<"ESISTE";
    				}
    			}while(FindNextFile(hFind, &ffd) != 0);//fino a che non ho quadrato tutte le nuove produzioni
    			
    		}
    	}
    quando defe fare "if(FindNextFile(hFind, &ffd)!= 0)" non entra dentor l'if anche se ci sono delle cartelle nella directory!
    ho provato a vedere cosa contiene l' ffc.cFileName e già da quando deve trovare il primo file della directory ffc.cFileName è vuoto e non riesco a capire il perchè!
    help!

  2. #2

    Re: [C++] problema FindFirstFile,FindNextFile

    Originariamente inviato da frebarr
    codice:
    	char pathRicercaProduzioni[500];
    ho provato a vedere cosa contiene l' ffc.cFileName e già da quando deve trovare il primo file della directory ffc.cFileName è vuoto e non riesco a capire il
    A parte che non sappiamo cosa contiene pathDirProduzioni. Ma comunque non devi richiamare la FindNextFile così a vuoto, anche perchè nessuno ti garantisce che "." e ".." siano le prime due cartelle restituite...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    41
    pathDirProduzioni contiene "D:\\quadrature\\aaa\\"

    Il fatto è che il problema me lo da già nel trovare il primo file

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    41
    ho messo un cout di ffd.cFileName dopo che faccio il FindFirstFile

    questo è il risultato:

    ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
    ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
    ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
    ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ ╠╠╠╠X┴¯ó\ ↕

  5. #5
    Originariamente inviato da frebarr
    ho messo un cout di ffd.cFileName dopo che faccio il FindFirstFile

    questo è il risultato:
    Probabilmente, stai sbagliando percorso. Devi verificare che la FindFirstFile non ritorni INVALID_HANDLE_VALUE. Il controllo che fai adesso non va bene.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    41
    ok ho modificato così:
    codice:
    	
    	hFind = (FindFirstFile(pathProd, &ffd));//troviamo il primo file della cartella 
    	if (hFind != INVALID_HANDLE_VALUE)
    ed effettivamente mi da errore,
    eppure non mi sembra sia sbagliato il path:

    sia così: "D:\\quadrature\\aaa\\*"
    che così: D:\quadrature\aaa\*
    mi dà errore

  7. #7
    Originariamente inviato da frebarr
    ok ho modificato così:
    codice:
    	
    	hFind = (FindFirstFile(pathProd, &ffd));//troviamo il primo file della cartella 
    	if (hFind != INVALID_HANDLE_VALUE)
    ed effettivamente mi da errore,
    eppure non mi sembra sia sbagliato il path:

    sia così: "D:\\quadrature\\aaa\\*"
    che così: D:\quadrature\aaa\*
    mi dà errore
    La backslash va sicuramente raddoppiata. Per il resto ovviamente non possiamo conoscere il tuo file system... prova con un altro path...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Subito dopo la

    if (hFind != INVALID_HANDLE_VALUE)

    inserisci una

    printf("%d\n", GetLastError());

    e dicci che numero ti restituisce.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    41
    Mettendo il GetLastError() mi restituisce questo numero:

    123

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    123 "The filename, directory name, or volume label syntax is incorrect."

    quindi controlla attentamente il contenuto di

    pathProd
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.