Codeguard und Dateioperationen
-
Hallo,
nachdem ich im C++ - Forum wahrscheinlich falsch war, plaziere ich meine Frage nochmal hier.Der auf das wesentliche reduzierte Code einer Klasse zum schreiben eines Logfiles:
#ifndef LogFileH #define LogFileH #include <string> #include <fstream> class TLog { private: std::fstream logfile; public: __fastcall TLog(std::string const &filename); __fastcall ~TLog(); void Write(std::string const val); void Read(); }; #endif
und die zugehörige .cpp-Datei:
#include "LogFile.h" TLog *Log; // --------------------------------------------------------------------------- __fastcall TLog::TLog(std::string const &filename) { logfile.open(filename.c_str(), std::ios::out|std::ios::in|std::ios::app); return; } // --------------------------------------------------------------------------- __fastcall TLog::~TLog() { logfile.close(); return; } // --------------------------------------------------------------------------- void TLog::Write(std::string const val) { if(logfile.is_open()) { logfile << val << std::endl; } return; } // --------------------------------------------------------------------------- void TLog::Read() { return; } // ---------------------------------------------------------------------------
der Aufruf im Konstruktor einer Form:
TLog *MyLog; MyLog = new TLog("c:\\temp\\wk_log.txt"); ... ... ...
beim Schreiben eines Strings in die Datei
MyLog->Write("yyyy");
generiert der Codeguard folgenden Fehler:
Fehler 00001. 0x310000 (Thread 0x0C94):
Falscher Parameter: Falsches Datei- oder Pipe-Stream (0xB53C84) wurde an die
Funktion weitergegeben.
fputs(0x0013F1EC ["yyyy"], 0x00B53C84)ich glaube, das der Fehler mit mit dem Stringformat zusammenhängt, aber ich weiß nicht was hier Abhilfe schafft.
In den Projektoptionen ist eingestellt:
_TCHAR entspricht wchar_t
Ich hoffe, mir kann hier jemand helfen.
Gruß Udo
-
Wenn das Basisdatentyp wchar_t solltest du String Literalen ein L voranstellen, z.b. L"yyyy".
-
Wenn ich das L voranstelle, dann bringt der Compiler den Fehler
E2034 Konvertierung von 'const wchar_t*' nach 'string' nicht möglich