Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Dateien in Verzeichnis aufgezählt bekommen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.10.2003, 16:12 Uhr
Oliver
S2-Pixelgeneral


Hallo,

wie kann man die Dateien aus einem bestimmten Verzeichnis in der WinAPI aufgezählt bekommen?

Danke für Hile, Oli
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.10.2003, 19:24 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,

C++:
#include <string>
#include <vector>
#include <iostream>

#include <conio.h>


int SearchDirectory(std::vector<std::string> &refvecDirectories,
                    const std::string        &refcstrRootDirectory,
                    bool                     bSearchSubdirectories = true)
{
  std::string     strPath;                
  std::string     strPattern;              
  HANDLE          hFile;                  
  WIN32_FIND_DATA FileInformation;        


  strPattern = refcstrRootDirectory + "\\*.*";

  hFile = ::FindFirstFile(strPattern.c_str(), &FileInformation);
  if(hFile != INVALID_HANDLE_VALUE){
    do{
      if(FileInformation.cFileName[0] != '.'){
        strPath.erase();
        strPath = refcstrRootDirectory + "\\ " + FileInformation.cFileName;

        if(FileInformation.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){
          refvecDirectories.push_back(strPath);

          if(bSearchSubdirectories){
            int iRC = SearchDirectory(refvecFiles,
                                      strPath,
                                      bSearchSubdirectories);
            if(iRC)
              return iRC;
          }
        }
      }
    } while(::FindNextFile(hFile, &FileInformation) == TRUE);
    ::FindClose(hFile);

    DWORD dwError = ::GetLastError();
    if(dwError != ERROR_NO_MORE_FILES)
      return dwError;
  }

  return 0;
}


int main()
{
  std::vector<std::string> vecDirectories;
  int iRC = SearchDirectory(vecDirectories, "c:");
  if(iRC){
    std::cout << "Error " << iRC << std::endl;
    return -1;
  }

  for(std::vector<std::string>::iterator iter = vecDirectories.begin();
      iter != vecDirectories.end();
      ++iter)
    std::cout << *iter << std::endl;
    _getch();

  return 0;
}


--edit-- Klammerungsfehler beseitigt
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 07.10.2003 um 20:00 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: