findfirstfile findnextfile
-
Hallo zusammen
Ich suche zum Thema "findfirstfile findnextfile" ein Quellcode.
Denn es mir ermöglichen soll, alle txt-Dateien aus einem Bestimmten Verzeichns aufzulisten. Danke für eure HilfeGruss Porsche
-
http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365200(v=vs.85).aspx
-
Danke für deine Antwort
Diese funktionieren bei mir nicht - mache ich vielleicht etwas falsch?
Gruss Porsche2012
-
Ja, Du machst was falsch.
1. keine exakte Fehlerbschreibung ("geht nicht" ist garnichts)
2. Keine Angabe Os, Compiler, Sprache
3. Posten des Quellecode-Diese API gehört mit zum ältesten Teil der WinApi und läuft mit jeder Windows Verion.
-
Hallo
Ich habe folgender Code eingegeben
#include <iostream> #include <windows.h> #include <string> using namespace std; int main() { HANDLE fHandle; WIN32_FIND_DATA FindFileData; char Pfad[]="C:\\Test"; LPWSTR path; MultiByteToWideChar(CP_ACP,NULL,Pfad,-1,path,5); fHandle=FindFirstFile( TEXT("C:\\Test"), &FindFileData); FindNextFile(fHandle,&FindFileData); while (FindNextFile(fHandle,&FindFileData)) { if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { cout<<"\n'Ein Ordner'\n\n"; // keine Datei sondern ein Ordner } else { cout<<"Folgende Datei gefunden: "<< FindFileData.cFileName <<"\n"; } } FindClose(fHandle); cin.get(); return 0; }
Das Programm lässt sich zwar kompilieren und Ausführen, aber beim Ausführen erhalte ich kein Ergebnis nur ein schwarzes Fenster. Zudem erfolget folgende Fehlermeldung.
C:\Dokumente und Einstellungen\Administrator\Desktop\TestFFFN.cpp [Warning] passing NULL used for non-pointer converting 2 of `int MultiByteToWideChar(UINT, DWORD, const CHAR*, int, WCHAR*, int)'Danke für eure Hilfe
-
hi,
du hast eine kleinigkeit vergessen, nämlich ein sternchen
(siehe mein kommentar im quellcode)
btw. benutzt du unnötigerweise multbytetowidechar, wenn _UNICODE und UNICODE
definiert ist, kannst du mit dem generischen datentypen TCHAR und mit dem macro _T (identisch mit dem TEXT macro ) arbeiten...
http://msdn.microsoft.com/de-de/library/dybsewaf(v=vs.80).aspx
oder wenn du eh nur wide character benötigst, kannst du auch gleich direkt wchar_t benutzen.#define _UNICODE #define UNICODE #include <windows.h> #include <tchar.h> int main() { HANDLE fHandle; WIN32_FIND_DATA wfd; TCHAR path[] = _T("C:\\*"); // <--------------- Hier hast du ein Sternchen vergessen. fHandle = FindFirstFile(path, &wfd ); // Erste Datei im Verzeichnis holen, die erste Datei ist ein "." und wird ignoriert. FindNextFile(fHandle,&wfd); // ".." wird ignoriert. while (FindNextFile(fHandle,&wfd)) { if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // Hier könnten die Unterverzeichnisse gescannt werden. } else { _tprintf( _T("Folgende Datei gefunden: %ls\n"), wfd.cFileName ); } } FindClose(fHandle); return 0; }
-
direkt mit wchar_t:
#define UNICODE #include <windows.h> int main(void) { HANDLE fHandle; WIN32_FIND_DATA wfd; wchar_t path[] = L"C:\\* "; // <--------------- Hier hast du ein Sternchen vergessen. fHandle = FindFirstFile(path, &wfd ); // Erste Datei im Verzeichnis holen, die erste Datei ist ein "." und wird ignoriert. FindNextFile(fHandle,&wfd); // ".." wird ignoriert. while (FindNextFile(fHandle,&wfd)) { if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // Hier könnten die Unterverzeichnisse gescannt werden. } else { wprintf(L"%ls\n", wfd.cFileName ); } } FindClose(fHandle); return 0; }