Wyświetlanie podkatalogów.
Ostatnio zmodyfikowano 2011-09-30 17:54
Aplauz Temat założony przez niniejszego użytkownika |
Wyświetlanie podkatalogów. » 2011-09-29 13:59:22 Witam,
Wiem, że podobny temat już założyłem i właściwie to ten jest jego kontynuacją. Udało mi się dodać w moim programie wchodzenie do podkatalogów i wyświetlanie ich zawartości (wielkie dzięki malman xD). Pojawił się jednak inny problem....
Mam obecnie ścieżkę do "Startup" przypisaną na "sztywno". Wszystkie pliki obojętnie, czy z katalogu "Startup", czy "Startup\1" wyświetlą się jako z katalogu "Startup". Myślę nad rozwiązaniem tego problemu już dobre 4 godziny i wszystkie moje pomysły okazują się nieskuteczne. Dzięki za wszelką pomoc.
#include <windows.h> #include <iostream> #include <io.h> #include <fstream> #include <list> #include <conio.h> #include <map> #include <string>
using namespace std;
list < string > GetFilesFromDirectory( string dir ) { list < string > files; string path = dir + "*"; WIN32_FIND_DATA FindFileData; HANDLE hFind; if(( hFind = FindFirstFile( path.c_str(), & FindFileData ) ) == INVALID_HANDLE_VALUE ) { return files; } else { files.push_back( FindFileData.cFileName ); while( FindNextFile( hFind, & FindFileData ) ) { if(( FindFileData.dwFileAttributes & _A_SUBDIR ) != _A_SUBDIR ) files.push_back( FindFileData.cFileName ); else { if( FindFileData.cFileName[ 0 ] == '.' && FindFileData.cFileName[ 1 ] == '.' ) continue; path = dir + FindFileData.cFileName + "\\"; list < string > lista = GetFilesFromDirectory( path ); list < string >::iterator it = lista.begin(); for(; it != lista.end(); it++ ) files.push_back( * it ); } } FindClose( hFind ); } return files; }
int main()
{ char * buffer = new char[ 120 ]; memset( buffer, 0, 120 ); GetEnvironmentVariable( "ALLUSERSPROFILE", buffer, 120 ); string path = buffer; path += "\\Start Menu\\Programs\\Startup\\"; list < string > files = GetFilesFromDirectory( path ); list < string >::iterator it = files.begin(); it++; it++; it++; for(; it != files.end(); it++ ) { cout << "\"" << path << "\",\"" << * it << "\"" << std::endl; } system( "pause" ); return 0; }
|
|
pekfos |
» 2011-09-29 15:53:44 po co zakładasz kolejny taki sam temat? nie możesz kontynuować w poprzednim? ;] |
|
Aplauz Temat założony przez niniejszego użytkownika |
» 2011-09-30 09:22:28 Kiedyś ktoś mi powiedział, że "jedno pytanie = jeden temat". Pytanie jest inne, więc i temat powinien by inny. O kurde, faktycznie... nie wiem czemu myślałem, że mi wtedy malman pomógł xD Poprawka! Dzięki Pefkos :d |
|
pekfos |
» 2011-09-30 17:54:56 |
|
« 1 » |