Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wyświetlanie podkatalogów.

Ostatnio zmodyfikowano 2011-09-30 17:54
Autor Wiadomość
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.
C/C++
#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 );
   
   
    // Autostart
    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;
}
P-41529
pekfos
» 2011-09-29 15:53:44
po co zakładasz kolejny taki sam temat? nie możesz kontynuować w poprzednim?
malman
;]
P-41530
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
P-41554
pekfos
» 2011-09-30 17:54:56
Pefkos
;]
P-41561
« 1 »
  Strona 1 z 1