?
Hallo zusammen,
ich versuche gerade ein Programm zu schreiben, daß alle Verezichnisse durchgeht und nach Textdateien sucht und diese anzeigt. Ich versuche durch meine Verzeichnisse rekursiv zu gehen. Ich rufe meine Funktion listen in der mein das Erste mal auf und dann wieder in der Funktion listen. Und beim ersten aufruf von der Funktion listen in der Funkton listen steht in der Variable "HANDLE hSearch" FFFFFF. Wenn er dann zu dieser Abfrage kommt:
if (hSearch == INVALID_HANDLE_VALUE)
{
return -1;
}
geht er in die if-Anweisung und führt return -1 aus, was er nicht sollte, sonst geht er ja nicht in die anderen Verzeichnisse.
Hat jemand eine Idee was ich falsch mache?
Schicke auch noch meinen Code mit.
Vielen Dank im voraus
Klaus
#include <iostream>
#include <windows.h>
#include <dir.h>
#include <stdio.h>
using namespace
std;
int listen(char *directory)
{
WIN32_FIND_DATA FData;
HANDLE hSearch = FindFirstFile(directory,&FData);
BOOL MoreFiles = FALSE;
int cnt_dir = 0, cnt_file = 0;
//TCHAR *szFileName;
DWORD dwRet;
DWORD bufferLen = 0;
TCHAR *buffer = new TCHAR[bufferLen];
TCHAR *filePart;
if (hSearch == INVALID_HANDLE_VALUE)
{
return -1;
}
do
{
// Ist das ein Ordner ?
if(FData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
// Den Ordnernamen ausgeben
cout<<"(Ordner) "<<FData.cFileName<<endl;
bufferLen = GetFullPathName(FData.cFileName, bufferLen, buffer, &filePart);
delete [] buffer;
if (bufferLen > 0)
{
buffer = new TCHAR[bufferLen+1];
dwRet = GetFullPathName(FData.cFileName, bufferLen+1, buffer, &filePart);
//cout << "Buffer: <" << buffer << ">" << endl;
/*if(fopen(buffer,"r") != NULL)
{ */
if (dwRet <= bufferLen)
{
// succeeded:
_tprintf(_T("FullName: %s\n"), buffer);
listen(buffer);
}
//delete [] buffer;
//}
}
cnt_dir++; // Ordnerzähler um 1 erhöhen
}
// Wenn nicht
else
{
// Den Dateinamen ausgeben
cout<<"(Datei)"<<FData.cFileName<<endl;
cnt_file++; //Dateizähler um 1 erhöhen
}
MoreFiles = FindNextFile(hSearch,&FData);
}while (MoreFiles);
FindClose(hSearch);
//cout<<endl<<"Insgesamt"<<endl<<"Ordner: "<<cnt_dir<<endl<<"Dateien: "<<cnt_file;
cin.get();
}
int main(int argc, char *argv[])
{
listen("C:\\*.*");
getchar();
return 0;
}
Edit:
Bitte die Code-Tags benutzen. Danke!