Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di SamIam
    Registrato dal
    Oct 2011
    Messaggi
    20

    [cpp win32] il path punta ad una cartella o ad un file ?

    Salve a tutti.
    Sto cercando di creare una funzione che sia in grado di riconoscere se un dato percorso, ad es :
    "C:\programmi\cartella\file.c"
    punta ad un file esistente, piuttosto che ad una cartella ad es :
    "C:\programmi\cartella"
    cartella che aimè potrebbe anche chiamarsi
    "C:\programmi\cartella\cartella.c" ...

    Ero abbastanza sicuro che fosse sufficiente accodare al path "\\.", e verificare l'esistenza di questo "file", ma in Windows 7 sembra non funzionare

    Ho provato anche con questo codice, traendo spunto da
    http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
    ma neppure questo distingue una cartella da un file
    codice:
    	DWORD dwAttrs = GetFileAttributes( csFullFileName );
    	printf( "dwAttrs = %ud\n", dwAttrs);
    	if( (dwAttrs & FILE_ATTRIBUTE_DIRECTORY) )
    	{
    		printf("> Il PATH corrisponde ad una cartella\n");
    		return true;
    	}
    	printf("> Il PATH NON corrisponde ad una cartella\n");
    perché non funziona ? grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non penso che la GetFileAttributes si comporti in Win7 diversamente da XP ...

    Fai un po' di debugging per controllare il contenuto della variabile csFullFileName a runtime ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di SamIam
    Registrato dal
    Oct 2011
    Messaggi
    20
    Grazie della risposta, ho fatto altre prove.
    la API funziona, effettivamente riconosce se il path punta ad un file.
    Però ho notato che non si accorge se la cartella esiste oppure no, voglio dire, secondo "lei" questi due percorsi puntano entrambe ad una cartella
    "F:\Programmi\Cartella"
    "F:\Programmi\Cartella_"

    anche se la seconda cartella non esiste.
    il malinteso di prima nasceva appunto dal fatto che per testarne la funzionalità io mi limitavo ad aggiungere un carattere alla stringa

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da SamIam
    anche se la seconda cartella non esiste.
    Perché non hai letto come funziona la GetFileAttributes nella documentazione

    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

    al paragrafo

    Return Value

    Quindi

    codice:
            DWORD dwAttrs = GetFileAttributes( csFullFileName );
    	if(dwAttrs == INVALID_FILE_ATTRIBUTES) 
    		printf("Err: %d\n", GetLastError());
    	else
    	{
    		printf( "dwAttrs = %ud\n", dwAttrs);
    		if( (dwAttrs & FILE_ATTRIBUTE_DIRECTORY) )
    		{
    			printf("> Il PATH corrisponde ad una cartella\n");
    			return true;
    		}
    		printf("> Il PATH NON corrisponde ad una cartella\n");
    	}
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di SamIam
    Registrato dal
    Oct 2011
    Messaggi
    20
    giusto, mi era sfuggito, grazie mille così è perfetto

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.