Ordner auslesen liefert seltsame Ausgabe



  • Hallo,
    ich habe ein paar Zeilen Code, die mir die Dateinamen von Dateien in einem bestimmten Ordner ausgeben sollen. Das funktioniert auch gut als Konsolenanwendung. Wenn ich allerding die gleichen Zeilen innerhalb eines größeren Projektes kopiere, dass ich bearbeite, dann bekomme ich als Ausgabe nicht die Dateinamen, sondern eine Kombination aus Zahlen und Buchstaben: 0012F554
    dabei scheint der Ordner ausgelesen werden zu können, denn die Anzahl der Ausgaben stimmt mit der Anzahl der Dateien im Ordner überein, nur bekomme ich halt nicht die Dateinamen. Kann mir jemand erklären, woran das liegen könnte?

    WIN32_FIND_DATA FindFileData;
    		HANDLE hFind;
    
    		bool moreFiles = false;
    		hFind = FindFirstFile(_T("C:\\Dokumente und Einstellungen\\tosi\\meshXchange\\*.*"), &FindFileData);
    		if (hFind == INVALID_HANDLE_VALUE) 
    		{
    		  printf ("FindFirstFile failed (%d)\n", GetLastError());
    		  return false;
    		} 
    		else 
    		{
    			fstream f;
    			f.open("C:\\demo.txt", ios::out);
    			do {
    				f << FindFileData.cFileName << endl;
    				moreFiles = FindNextFile(hFind, &FindFileData);
    			}while (moreFiles);
    			f.close();
    			FindClose(hFind);
    			return true;
    		}
    


    1. du gibst zwar Code an, aber nicht, wie du die Dateinamen ausgibst. Und wenn das der Fehler ist, sollte man da auch den Fehler suchen, oder?
    2. du vermischst C++ (fstream) und C-I/O (printf). Entscheide dich für eines, am Besten für das, in welcher Sprache du tatsächlich schreiben möchtest.


    1. In Zeile 16 wird der Dateiname in die Textdatei geschrieben.
    2. probier ich mal


  • Solche Fragen gehören übrigens hierhin:

    http://c-plusplus.net/forum/viewforum-var-f-is-4.html



  • Der scheint 'FindFileData.cFileName' als void* auszugeben (und dann wird einfach die Adresse ausgegeben).
    Ich tippe darauf, daß du ein Unicode-Projekt hast und dann 'FindFileData.cFileName als wchar_t* vorliegt, d.h. du müßtest mit wide-chars operieren, d.h. wcout bzw. wfstream etc...

    P.S: pumuckl, die Ausgabe erfolgt in die Datei...



  • Th69 schrieb:

    P.S: pumuckl, die Ausgabe erfolgt in die Datei...

    jup sorry, grade gesehn



  • HAllo. ich habe mir deinen Code mal angesehen. Du bekommst doch nur einen Dateinamen zurück oder ?.
    Also alle Dateien in einem Verzeichnis kannst du damit nicht bekommen.
    IOCh würde den Code in eine Funktion packen, die du dann rekursiv aufrust ( immer mit dem aktuellen ordner namen)



  • Mit dem do-while bekommt man schon alle Dateien in dem Verzeichnis.

    Und mein Problem hat sich gelöst durch den Tipp mit dem wfstream
    Vielen Dank dafür.



  • Ja schon aber nur in dem einen Verzeichnis, es wird nicht rekusriv abgearbeitet



  • dercooleauswandere schrieb:

    Ja schon aber nur in dem einen Verzeichnis, es wird nicht rekusriv abgearbeitet

    Wenn er das aber doch gar nicht möchte....


Anmelden zum Antworten