CFileFind
-
Hallo,
ich habe bislang mit VS 2003 .Net gearbeitet. Da funktioniert folgender Code wunderbar:
#define WINVER 0x0501 #include "afx.h" #include <iostream> using namespace std; int main() { CFileFind finder; BOOL bWorking = finder.FindFile("*.*"); while (bWorking) { bWorking = finder.FindNextFile(); cout << (LPCTSTR) finder.GetFileName() << endl; } }Wenn ich diesen Code allerings mit VS 2005 verwende, bekomme ich folgende Fehlermeldung:
error C2664: 'CFileFind::FindFile': Konvertierung des Parameters 1 von 'const char [4]' in 'LPCTSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.Wieso funktioniert der Code plötzlich nicht mehr?
Ich hab ihn ja auch aus der Dokumentation zu Vs 2005.
Und wie kann ich den Fehler beheben?Viele Grüsse
-
Unter VC2005 werden alle Projekte automatisch im UNICODE erstellt. Und cout nimmt weiterhin eben nur char*. Dum üsstest also CW2A(finder.GetFileName()) verwenden um den Unicode String in einen MBCS String zu wandeln.
-
Ich bekomme leider immer noch dieselbeFehlermeldung.
Ich hatte es acuh mit dem reinterpret_cast probiert, aber das bringt denselben Fehler.
-
Hast du eigentlich mal ausprobiert was ich im anderen Thread geschrieben habe? Zumindest dieser Fehler sollte damit verschwinden. Die Sache mit dem cout kann nicht durch einen einfachen Cast gelöst werden. Da musst du erstmal WideCharToMultiByte (oder so ähnlich) anwenden.
-
Ja, habe ich, ich hab immer noch dieselbe Fehlermeldung.
Jetzt hab ich auch mal de cout-Zeile raus, aber immer noch derselbe Fehler.
-
Ersetze:
BOOL bWorking = finder.FindFile("*.*");durch
BOOL bWorking = finder.FindFile(TEXT("*.*"));oder
BOOL bWorking = finder.FindFile(_T("*.*"));
-
Hab das ganze jetzt nochmal in einem neuen Projekt gemacht. Jetzt compiliert das ganze fehlerfrei und ich hab eine lesbare Ausgabe.
Verstehe das jetzt ehrlich gesagt nicht, weil ist haargenau derselbe Code.Danke Euch.