CFileDialog und fstream
-
Hallo,
ich hab da ein Problem:
Ich will eine Datei mit CFileDialog öffnen. GetPathname gibt einen CString zurück. Da ich die Datei auf eof untersuchen muss, muss ich mit fstream Arbeiten, da in CFile keine eof Methode gibt.
FILE* datei; CFileDialog m_dlgFile(true); if( m_dlgFile.DoModal() == IDOK ) { g_pathname = m_dlgFile.GetPathName(); } datei=fopen(reinterpret_cast<const char*>(LPCTSTR(g_pathname)), "rb"); fseek(datei, 8, SEEK_SET); //zu Byte 8 gehenNun wird das natürlich mit Warnung bei fopen Kompiliert und wird fseek ausgeführt kommt eine Fehlermeldung wie stream!=NULL
Hat jemand eine Lösung wie ich die Konvertierung zwischen CString un const char* besser mache bzw. was ich allgemein besser machen könnte?
Grüße
Micha
-
der_micha1981 schrieb:
Da ich die Datei auf eof untersuchen muss, muss ich mit fstream Arbeiten, da in CFile keine eof Methode gibt.
Das Ende der Datei erkennst du bei CFile daran, dass Read weniger Zeichen liefert, als du angefordert hast. Du benutzt übrigens nicht fstream, sondern die C File API (fopen usw.).
der_micha1981 schrieb:
Nun wird das natürlich mit Warnung bei fopen Kompiliert
Natürlich. Du hast dem Compiler mit dem Cast ja ausdrücklich verboten, sich zu beschweren. Wenn dein CString Unicode ist, ist dieser Cast schlicht und einfach falsch. Wenn nicht, ist er unnötig. Merke dir: Casts sind nur in den allerseltensten Fällen dazu geeignet, Compilezeitfehler zu beheben. Damit handelst du dir fast immer nur statt dessen einen Laufzeitfehler ein, was die schlechtere Alternative ist.
der_micha1981 schrieb:
Hat jemand eine Lösung wie ich die Konvertierung zwischen CString un const char* besser mache
Was heißt besser? Bisher machst du überhaupt keine Konvertierung.
Schau dir mal WideCharToMultiByte an.