Dateien durchsuchen... was kann da falsch sein?
-
Hallo zusammen,
kann jemand einen Fehler hier entdecken? Das Programm stürzt bei mir ab:
// FMUpdate.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
///*
Soll alle fmd-Dateien in Unterverzeichnisen suchen und "irgendwie" updaten...
*/
#include <stdio.h> // I/O #include <iostream.h> #include <io.h> struct _finddata_t entry; long handle; int main(int argc, char* argv[]){ if( _findfirst("*.*",&entry)!=-1 ) { do { printf( "%s\n" , entry.name ); } while( _findnext(handle,&entry)==NULL ); _findclose(handle); } return 0; }
-
Du hast vergessen, 'handle' mit einem Wert zu belegen (anhand dieses Handle's will _findnext() später deine Suchabfrage erkennen und fortsetzen):
if( (handle=_findfirst("*.*",&entry)) !=-1) ...
-
Was hat das mit C++ zu tun?
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
danke!!
-
ähm, habs jetzt so probiert:
if( handle=_findfirst("./*.*",&entry)!=-1 ) { do { printf( "%s\n" , entry.name ); } while( _findnext(handle,&entry)==NULL ); _findclose(handle); }Aber irgendwie funktioniert es immer noch nicht... Es wird nur der erste "." ausgebene, dann hört die Ausgabe auf...
Kann mir dabei jmd. weiterhelfen?
Viele Grüße,
Tobias
-
prüfe mal, welchen rückgabewert die funktion hat (die in der while-bedingung) und dann überprüfe das mit der erwartung
-
Hello

Habs schnell geschrieben und funktioniert so komplett.
Die Textausgaben kannst ja so machen wie du willst.
Ist ein schnelles Beispiel und gleich getestet.#include <windows.h> #include <stdio.h> #include <io.h> void Anzeige() { int iFehler=0; char cFehlertext[100]=""; char cBuffer[10000]=""; WIN32_FIND_DATA FindFileData; HANDLE hFind; hFind = FindFirstFile("*.*", &FindFileData); strcpy(cBuffer,""); strcat(cBuffer,FindFileData.cFileName); strcat(cBuffer,","); if (hFind == INVALID_HANDLE_VALUE) { iFehler=GetLastError(); itoa(iFehler,cFehlertext,10); MessageBox(NULL,cFehlertext," Fehlerinfo ",MB_OK); } else { while(FindNextFile(hFind,&FindFileData) != 0) { strcat(cBuffer,FindFileData.cFileName); strcat(cBuffer,","); } FindClose(hFind); MessageBox(NULL,cBuffer," Ergebnis ",MB_OK); } } int WINAPI WinMain(HINSTANCE d1, HINSTANCE d2, LPSTR d3, int d4) { Anzeige(); }
-
Super, danke... bei mir daheim hats grad funktioniert.
Hm, jetzt muss ich noch schauen, ob das bei der Arbeit geht... (da ging das andere Beispiel nämlich nicht!) ... Danke!Gruß, Tobias