C++ List Directory

Programovacie jazyky, rady, poradňa...
SSPPYY
Medium Star
Medium Star
Príspevky: 370
Registrovaný: 28 máj 2006, 9:46

C++ List Directory

Príspevok od používateľa SSPPYY »

Neviete mi niekto pomoct ako v C/C++ prehladavat priecinok na zadanej ceste?
Pouzivam nato funkciu readdir ale ta mi vrati len nazvy vsetkych podadresarov a suborov a neda sa jednoznacne urcit co je subor a co podadresar. Neviete niekto ako to riesit? :?
Dakujem
trizzo
VIP
VIP
Používateľov profilový obrázok
Príspevky: 2927
Registrovaný: 26 sep 2004, 14:39

Príspevok od používateľa trizzo »

VB:

Kód: Vybrať všetko

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1927171&SiteID=1
alebo:

Kód: Vybrať všetko

http://www.devx.com/cplus/10MinuteSolution/26748/0/page/2
SSPPYY
Medium Star
Medium Star
Príspevky: 370
Registrovaný: 28 máj 2006, 9:46

Príspevok od používateľa SSPPYY »

No jo tak to mi velmi nepomohlo ale nakoniec som to vyriesil trochu hlupo ale ide to :wink:
Kazdy podadresar a subor preverim cez diropen a ked vrati NULL tak je to subor inak je to podadresar :lol:
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

SSPPYY napísal:No jo tak to mi velmi nepomohlo ale nakoniec som to vyriesil trochu hlupo ale ide to :wink:
Kazdy podadresar a subor preverim cez diropen a ked vrati NULL tak je to subor inak je to podadresar :lol:
a co je na tom hlupe?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Ja by som radšej použil (na overenie, či je to adresár) funkciu stat(). Tá funkcia diropen() môže zlyhať aj pri nedostatočných právach (ak to používaš aj inde ako v DOS/Windows).
programator
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 18 apr 2005, 8:31
Bydlisko: Papua new Guinea
Kontaktovať používateľa:

Príspevok od používateľa programator »

Ja by som to vyriesil pomocou WinAPI funkcii FindFirstFile(), FindNextFile()..
Je to pohodlne, ako parameter sa odovzdava struktura WIN32_FIND_DATA, z ktorej je po zavolani funkcie moznost ziskat ostatne data o subore/priecinku (vid definiciu nizsie).
Detailnejsi popis :

Kód: Vybrať všetko

HANDLE FindFirstFile(
    LPCTSTR lpFileName,	// pointer to name of file to search for  
    LPWIN32_FIND_DATA lpFindFileData 	// pointer to returned information 
   );

BOOL FindNextFile(
    HANDLE hFindFile,	// handle to search  
    LPWIN32_FIND_DATA lpFindFileData 	// pointer to structure for data on found file  
   );

typedef struct _WIN32_FIND_DATA { // wfd  
    DWORD dwFileAttributes; 
    FILETIME ftCreationTime; 
    FILETIME ftLastAccessTime; 
    FILETIME ftLastWriteTime; 
    DWORD    nFileSizeHigh; 
    DWORD    nFileSizeLow; 
    DWORD    dwReserved0; 
    DWORD    dwReserved1; 
    TCHAR    cFileName[ MAX_PATH ]; 
    TCHAR    cAlternateFileName[ 14 ]; 
} WIN32_FIND_DATA;
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Lenže ak chce používať štandardné funkcie C/C++, tak asi WinAPI nie je najlepší nápad. ;)
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

chrono napísal:Lenže ak chce používať štandardné funkcie C/C++, tak asi WinAPI nie je najlepší nápad. ;)
nj ale taky windows nepozna readdir a opendir :)
programator
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 18 apr 2005, 8:31
Bydlisko: Papua new Guinea
Kontaktovať používateľa:

Príspevok od používateľa programator »

chrono napísal:Lenže ak chce používať štandardné funkcie C/C++, tak asi WinAPI nie je najlepší nápad. ;)
Ano, lenze on sa o rydzo stantardnych funkciach nezmienoval. A osobne si myslim, ze cez WinAPI je to celkom pohodlne (ak ide o platformu Windows), jednoduche a najme koplexne riesenie.
I ked samozrejme zalezi na situacii (platforme), kde bude dany kod implementovany...
Napísať odpoveď