<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Codeguard und Dateioperationen]]></title><description><![CDATA[<p>Hallo,</p>
<p>nachdem ich durch die Suche keine Lösung für mein Problem gefunden habe (Threads habe ich aber gefunden) hier meine Frage:</p>
<p>Ich habe eine Klasse zum schreiben und lesen eines Log-Files. Der auf das wesentliche reduzierte Code:</p>
<p>Header:</p>
<pre><code class="language-cpp">#ifndef LogFileH
#define LogFileH

//#include &lt;boost/filesystem/fstream.hpp&gt;
#include &lt;string&gt;
//#include &lt;fstream&gt;
#include &lt;stdio.h&gt;

//namespace fs = boost::filesystem;

class TLog {
	private:
		FILE *logfile;
//		fs::fstream logfile;

	public:
		__fastcall TLog(std::string const &amp;filename);
		__fastcall ~TLog();
		void Write(std::string const val);
		void Read();
};

#endif
</code></pre>
<p>cpp-Datei</p>
<pre><code class="language-cpp">#include &quot;LogFile.h&quot;

TLog *Log;

// ---------------------------------------------------------------------------

__fastcall TLog::TLog(std::string const &amp;filename) {
	logfile = fopen(filename.c_str(),&quot;a+&quot;);
//	logfile.open(filename.c_str(), std::ios::out|std::ios::in|std::ios::app);
	return;
}
// ---------------------------------------------------------------------------

__fastcall TLog::~TLog() {
//	logfile.close();
	fclose(logfile);
	return;
}
// ---------------------------------------------------------------------------

void TLog::Write(std::string const val) {
//	if(logfile.is_open()) {
//		logfile &lt;&lt; val &lt;&lt; std::endl;
//	}
	if(logfile != NULL) {
		fputs(val.c_str(),logfile);
    }
	return;
}
// ---------------------------------------------------------------------------

void TLog::Read() {
	return;
}
// ---------------------------------------------------------------------------
</code></pre>
<p>Aufruf im Konstructor einer Form:</p>
<pre><code class="language-cpp">TLog *MyLog;
	MyLog = new TLog(&quot;c:\\temp\\wk_log.txt&quot;);
...
...
...
</code></pre>
<p>in einer anderen Funktion der Form:</p>
<pre><code class="language-cpp">MyLog-&gt;Write(&quot;yyyy&quot;);
</code></pre>
<p>im OnClose Event der Form:</p>
<pre><code class="language-cpp">delete MyLog;
	MyLog = NULL;
</code></pre>
<p>Codeguard beschwert sich mit folgendem Fehler, egal ob ich mit der Standardlibrary, dem Boost-Filesystem oder direkt mit Filefunktionen arbeite<br />
mit folgendem Fehler:</p>
<blockquote>
<p>Fehler 00001. 0x310000 (Thread 0x0C94):<br />
Falscher Parameter: Falsches Datei- oder Pipe-Stream (0xB53C84) wurde an die<br />
Funktion weitergegeben.<br />
fputs(0x0013F1EC [&quot;yyyy&quot;], 0x00B53C84)</p>
<p>Aufrufhierarchie:<br />
0x004A9A22(=Walzenkartei.exe:0x01:0A8A22)<br />
0x004988EC(=Walzenkartei.exe:0x01:0978EC)<br />
0x502BECD7(=vcl140.bpl:0x01:0FDCD7)<br />
0x00616D8F(=Walzenkartei.exe:0x01:215D8F)<br />
0x50295E73(=vcl140.bpl:0x01:0D4E73)<br />
0x5029A73D(=vcl140.bpl:0x01:0D973D)</p>
<p>------------------------------------------<br />
Fehler 00002. 0x310000 (Thread 0x0C94):<br />
Falscher Parameter: Falsches Datei- oder Pipe-Stream (0xB53C3C) wurde an die<br />
Funktion weitergegeben.<br />
fflush(0x00B53C3C)</p>
<p>Aufrufhierarchie:<br />
0x00AD7DB3(=Walzenkartei.exe:0x01:6D6DB3)<br />
0x00ADFBDE(=Walzenkartei.exe:0x01:6DEBDE)<br />
0x00ADEE6C(=Walzenkartei.exe:0x01:6DDE6C)<br />
0x00ADFDD8(=Walzenkartei.exe:0x01:6DEDD8)</p>
<p>------------------------------------------<br />
usw.</p>
</blockquote>
<p>In die Datei wird aber korrekt geschrieben.</p>
<p>In irgendeinem CodeGear-Artikel habe ich zwar gelesen, das man als Workaround<br />
&quot;Dynamic RTL&quot; abschalten soll, aber auch nach dem Abschalten generiert Codeguard den gleichen Fehler.</p>
<p>Ich hoffe, mir kann jemand helfen (vielleicht habe ich ja auch einen Fehler gemacht?).</p>
<p>Gruß Udo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274001/codeguard-und-dateioperationen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 17:05:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274001.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 17 Sep 2010 08:44:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Fri, 17 Sep 2010 08:44:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>nachdem ich durch die Suche keine Lösung für mein Problem gefunden habe (Threads habe ich aber gefunden) hier meine Frage:</p>
<p>Ich habe eine Klasse zum schreiben und lesen eines Log-Files. Der auf das wesentliche reduzierte Code:</p>
<p>Header:</p>
<pre><code class="language-cpp">#ifndef LogFileH
#define LogFileH

//#include &lt;boost/filesystem/fstream.hpp&gt;
#include &lt;string&gt;
//#include &lt;fstream&gt;
#include &lt;stdio.h&gt;

//namespace fs = boost::filesystem;

class TLog {
	private:
		FILE *logfile;
//		fs::fstream logfile;

	public:
		__fastcall TLog(std::string const &amp;filename);
		__fastcall ~TLog();
		void Write(std::string const val);
		void Read();
};

#endif
</code></pre>
<p>cpp-Datei</p>
<pre><code class="language-cpp">#include &quot;LogFile.h&quot;

TLog *Log;

// ---------------------------------------------------------------------------

__fastcall TLog::TLog(std::string const &amp;filename) {
	logfile = fopen(filename.c_str(),&quot;a+&quot;);
//	logfile.open(filename.c_str(), std::ios::out|std::ios::in|std::ios::app);
	return;
}
// ---------------------------------------------------------------------------

__fastcall TLog::~TLog() {
//	logfile.close();
	fclose(logfile);
	return;
}
// ---------------------------------------------------------------------------

void TLog::Write(std::string const val) {
//	if(logfile.is_open()) {
//		logfile &lt;&lt; val &lt;&lt; std::endl;
//	}
	if(logfile != NULL) {
		fputs(val.c_str(),logfile);
    }
	return;
}
// ---------------------------------------------------------------------------

void TLog::Read() {
	return;
}
// ---------------------------------------------------------------------------
</code></pre>
<p>Aufruf im Konstructor einer Form:</p>
<pre><code class="language-cpp">TLog *MyLog;
	MyLog = new TLog(&quot;c:\\temp\\wk_log.txt&quot;);
...
...
...
</code></pre>
<p>in einer anderen Funktion der Form:</p>
<pre><code class="language-cpp">MyLog-&gt;Write(&quot;yyyy&quot;);
</code></pre>
<p>im OnClose Event der Form:</p>
<pre><code class="language-cpp">delete MyLog;
	MyLog = NULL;
</code></pre>
<p>Codeguard beschwert sich mit folgendem Fehler, egal ob ich mit der Standardlibrary, dem Boost-Filesystem oder direkt mit Filefunktionen arbeite<br />
mit folgendem Fehler:</p>
<blockquote>
<p>Fehler 00001. 0x310000 (Thread 0x0C94):<br />
Falscher Parameter: Falsches Datei- oder Pipe-Stream (0xB53C84) wurde an die<br />
Funktion weitergegeben.<br />
fputs(0x0013F1EC [&quot;yyyy&quot;], 0x00B53C84)</p>
<p>Aufrufhierarchie:<br />
0x004A9A22(=Walzenkartei.exe:0x01:0A8A22)<br />
0x004988EC(=Walzenkartei.exe:0x01:0978EC)<br />
0x502BECD7(=vcl140.bpl:0x01:0FDCD7)<br />
0x00616D8F(=Walzenkartei.exe:0x01:215D8F)<br />
0x50295E73(=vcl140.bpl:0x01:0D4E73)<br />
0x5029A73D(=vcl140.bpl:0x01:0D973D)</p>
<p>------------------------------------------<br />
Fehler 00002. 0x310000 (Thread 0x0C94):<br />
Falscher Parameter: Falsches Datei- oder Pipe-Stream (0xB53C3C) wurde an die<br />
Funktion weitergegeben.<br />
fflush(0x00B53C3C)</p>
<p>Aufrufhierarchie:<br />
0x00AD7DB3(=Walzenkartei.exe:0x01:6D6DB3)<br />
0x00ADFBDE(=Walzenkartei.exe:0x01:6DEBDE)<br />
0x00ADEE6C(=Walzenkartei.exe:0x01:6DDE6C)<br />
0x00ADFDD8(=Walzenkartei.exe:0x01:6DEDD8)</p>
<p>------------------------------------------<br />
usw.</p>
</blockquote>
<p>In die Datei wird aber korrekt geschrieben.</p>
<p>In irgendeinem CodeGear-Artikel habe ich zwar gelesen, das man als Workaround<br />
&quot;Dynamic RTL&quot; abschalten soll, aber auch nach dem Abschalten generiert Codeguard den gleichen Fehler.</p>
<p>Ich hoffe, mir kann jemand helfen (vielleicht habe ich ja auch einen Fehler gemacht?).</p>
<p>Gruß Udo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1953653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1953653</guid><dc:creator><![CDATA[Udo11]]></dc:creator><pubDate>Fri, 17 Sep 2010 08:44:42 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Fri, 17 Sep 2010 08:50:07 GMT]]></title><description><![CDATA[<p>Schau Dir doch mal den Zeiger auf TLog an. In Deiner Klasse TLog habe ich jetzt erst mal auch keinen Fehler gefunden.</p>
<p>BTW.: Gehört das nicht eher in das VCL-Forum?</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1953656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1953656</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 17 Sep 2010 08:50:07 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Fri, 17 Sep 2010 09:00:55 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich nutze zwar den C++Builder, aber das ist doch eher Builder-unabhänig?</p>
<p>Was ist mit dem Zeiger auf TLog?</p>
<p>Gruß Udo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1953668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1953668</guid><dc:creator><![CDATA[Udo11]]></dc:creator><pubDate>Fri, 17 Sep 2010 09:00:55 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Fri, 17 Sep 2010 09:07:35 GMT]]></title><description><![CDATA[<p>Udo11 schrieb:</p>
<blockquote>
<p>Hallo,<br />
ich nutze zwar den C++Builder, aber das ist doch eher Builder-unabhänig?</p>
</blockquote>
<p>CodeGuard ist kein Standardtool sondern nur bei den C(++) Compilern von Borland dabei.</p>
<p>Udo11 schrieb:</p>
<blockquote>
<p>Was ist mit dem Zeiger auf TLog?</p>
</blockquote>
<p>Keine Ahnung, Du hast ja nicht den Quelltext Deiner &quot;TForm-Klasse&quot; geliefert.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1953675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1953675</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 17 Sep 2010 09:07:35 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Fri, 17 Sep 2010 09:09:20 GMT]]></title><description><![CDATA[<p>Wenn das nicht hierher paßt, dann bitte ins richtige Forum verschieben.</p>
<p>Gruß Udo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1953676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1953676</guid><dc:creator><![CDATA[Udo11]]></dc:creator><pubDate>Fri, 17 Sep 2010 09:09:20 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Fri, 17 Sep 2010 10:13:35 GMT]]></title><description><![CDATA[<p>Was passiert, wenn du den Parametertypen der Write() Funktion auf const std::string&amp; änderst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1953708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1953708</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 17 Sep 2010 10:13:35 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Fri, 17 Sep 2010 11:57:05 GMT]]></title><description><![CDATA[<p>Gleiche Fehlermeldung von CodeGuard.</p>
<p>Gruß Udo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1953781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1953781</guid><dc:creator><![CDATA[Udo11]]></dc:creator><pubDate>Fri, 17 Sep 2010 11:57:05 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Fri, 17 Sep 2010 13:58:14 GMT]]></title><description><![CDATA[<p>Udo11 schrieb:</p>
<blockquote>
<p>Gleiche Fehlermeldung von CodeGuard.</p>
<p>Gruß Udo</p>
</blockquote>
<p>Ist dir eigentlich aufgefallen, daß CodeGuard in beiden Fällen unterschiedliche Pointer anmeckert:</p>
<p>Falscher Parameter: Falsches Datei- oder Pipe-Stream (<strong>0xB53C84</strong>) wurde an die Funktion weitergegeben.</p>
<p>Falscher Parameter: Falsches Datei- oder Pipe-Stream (<strong>0xB53C3C</strong>) wurde an die Funktion weitergegeben.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1953871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1953871</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 17 Sep 2010 13:58:14 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Mon, 20 Sep 2010 06:50:12 GMT]]></title><description><![CDATA[<p>Ja, das ist mir aufgefallen, es gibt aber noch einen Unterschied:</p>
<blockquote>
<p>Fehler 00001. 0x310000 (Thread 0x0C94):<br />
Falscher Parameter: Falsches Datei- oder Pipe-Stream (<strong>0xB53C84</strong>) wurde an die<br />
Funktion weitergegeben.<br />
fputs(0x0013F1EC [&quot;yyyy&quot;], <strong>0x00B53C84</strong>)</p>
</blockquote>
<p>Vielleicht ist der von Bedeutung?</p>
<p>Gruß Udo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954588</guid><dc:creator><![CDATA[Udo11]]></dc:creator><pubDate>Mon, 20 Sep 2010 06:50:12 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Mon, 20 Sep 2010 07:20:11 GMT]]></title><description><![CDATA[<p>Da ist kein Unterschied, das ist die gleiche Zahl.<br />
Dass sich logfile verändert, würde mir dagegen schon eher verdächtig vorkommen. Lass dir mal den Wert von logfile direkt nach der Instanziierung von MyLog ausgeben und danach immer wieder. Wenn der Wert gleich bleibt, CodeGuard aber trotzdem meckert, liegt der Fehler bei CodeGuard.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1954603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1954603</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Mon, 20 Sep 2010 07:20:11 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Tue, 21 Sep 2010 12:53:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>da die Variable mylogfile private ist, habe ich die Funktion zur Ausgabe des Wertes in di Klasse aufgenommen:<br />
im Header:</p>
<pre><code class="language-cpp">int GetMyLogFile() const;
</code></pre>
<p>Implementation:</p>
<pre><code class="language-cpp">int TLog::GetMyLogFile() const {
	return (int)&amp;mylogfile;
}
</code></pre>
<p>Der Wert der Ausgabe ändert sich während der Programmlaufzeit nicht.</p>
<p>Gruß Udo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955375</guid><dc:creator><![CDATA[Udo11]]></dc:creator><pubDate>Tue, 21 Sep 2010 12:53:56 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Wed, 22 Sep 2010 05:51:27 GMT]]></title><description><![CDATA[<p>Udo11 schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>da die Variable mylogfile private ist, habe ich die Funktion zur Ausgabe des Wertes in di Klasse aufgenommen:<br />
im Header:</p>
<pre><code class="language-cpp">int GetMyLogFile() const;
</code></pre>
<p>Implementation:</p>
<pre><code class="language-cpp">int TLog::GetMyLogFile() const {
	return (int)&amp;mylogfile;
}
</code></pre>
<p>Der Wert der Ausgabe ändert sich während der Programmlaufzeit nicht.</p>
<p>Gruß Udo</p>
</blockquote>
<p>Ich würde mal auch nicht die <strong>Adresse</strong> deines Pointers untersuchen sondern den <strong>Inhalt</strong>.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1955727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1955727</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Wed, 22 Sep 2010 05:51:27 GMT</pubDate></item><item><title><![CDATA[Reply to Codeguard und Dateioperationen on Thu, 23 Sep 2010 12:37:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe jetzt herausgefunden, das der CodeGuard-Fehler mit dem übergebenen String in der Funktion write(std::string) zusammenhängt.</p>
<p>Bei folgendem Funktionsaufruf wird der Fehler gemeldet:</p>
<pre><code class="language-cpp">MyLog-&gt;Write(&quot;ein Beispielstring&quot;);
</code></pre>
<p>folgender Funktionsaufruf läuft ohne Fehler:</p>
<pre><code class="language-cpp">MyLog-&gt;Write(AnsiString(&quot;ein Beispielstring&quot;).c_str());
</code></pre>
<p>Im zweiten Fall wird ja ein <strong>char</strong>* übergeben und im ersten Fall ein <strong>wchar_t</strong>* oder?</p>
<p>Wenn das jetzt doch eher VCL-Sache ist, dann bitte ins richtige Forum verschieben.</p>
<p>Gruß Udo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1956438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1956438</guid><dc:creator><![CDATA[Udo11]]></dc:creator><pubDate>Thu, 23 Sep 2010 12:37:33 GMT</pubDate></item></channel></rss>