<?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[Laufzeitfehler ausserhalb des Debuggers]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine kleine Dialog-Anwendung mit Hilfe der WinAPI (ohne MFC) programmiert.</p>
<p>Auf meinem Dialog finden sich einige Textfelder in welche ich Zahlen vom Typ double schreibe.</p>
<p>Dafür habe ich mir folgende Funktion geschrieben:</p>
<pre><code>bool setEditValue_double(double val, int item)
{

	if(mainDlg!=NULL)
	{
		TCHAR * value;
		value=(TCHAR *)malloc(sizeof(val));
		_sntprintf(value,sizeof(val),_T(&quot;%f&quot;),val);
		return SetDlgItemText(mainDlg, item, value);
	}
	else return false;
}
</code></pre>
<p>Diese verwende ich mehrfach in meinem Programm.</p>
<p>Es läuft alles ganz gut, die Zahlen werden korrekt in den Textfeldern dargestellt.</p>
<p>Da das Programm nun eigentlich fertig ist, habe ich mal versuch die EXE ausserhalb des Debuggers auszuführen. Sie stürzt jedoch ab und es gibt einen Laufzeitfehler.</p>
<p>Ich konnte die Ursache soweit eingrenzen, dass es wohl an obiger Funktion liegt. Jedoch tritt der Fehler nicht beim 1. , sondern erst nach mehrmaligem Aufrufen auf.</p>
<p>An den Parametern kann es eigentlich nicht liegen, da alle Zahlen vom Typ double sind und mehr als die angezeigten 6 Nachkommastellen besitzen.</p>
<p>Ich habe auch schon andere Versionen von printf verwendet, wie etwa swprintf(), _stprintf() etc pp.</p>
<p>Ich hoffe ihr könnt mir sagen woran das liegt.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196935/laufzeitfehler-ausserhalb-des-debuggers</link><generator>RSS for Node</generator><lastBuildDate>Sat, 02 May 2026 02:56:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196935.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 04 Nov 2007 18:01:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Laufzeitfehler ausserhalb des Debuggers on Sun, 04 Nov 2007 18:01:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine kleine Dialog-Anwendung mit Hilfe der WinAPI (ohne MFC) programmiert.</p>
<p>Auf meinem Dialog finden sich einige Textfelder in welche ich Zahlen vom Typ double schreibe.</p>
<p>Dafür habe ich mir folgende Funktion geschrieben:</p>
<pre><code>bool setEditValue_double(double val, int item)
{

	if(mainDlg!=NULL)
	{
		TCHAR * value;
		value=(TCHAR *)malloc(sizeof(val));
		_sntprintf(value,sizeof(val),_T(&quot;%f&quot;),val);
		return SetDlgItemText(mainDlg, item, value);
	}
	else return false;
}
</code></pre>
<p>Diese verwende ich mehrfach in meinem Programm.</p>
<p>Es läuft alles ganz gut, die Zahlen werden korrekt in den Textfeldern dargestellt.</p>
<p>Da das Programm nun eigentlich fertig ist, habe ich mal versuch die EXE ausserhalb des Debuggers auszuführen. Sie stürzt jedoch ab und es gibt einen Laufzeitfehler.</p>
<p>Ich konnte die Ursache soweit eingrenzen, dass es wohl an obiger Funktion liegt. Jedoch tritt der Fehler nicht beim 1. , sondern erst nach mehrmaligem Aufrufen auf.</p>
<p>An den Parametern kann es eigentlich nicht liegen, da alle Zahlen vom Typ double sind und mehr als die angezeigten 6 Nachkommastellen besitzen.</p>
<p>Ich habe auch schon andere Versionen von printf verwendet, wie etwa swprintf(), _stprintf() etc pp.</p>
<p>Ich hoffe ihr könnt mir sagen woran das liegt.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397647</guid><dc:creator><![CDATA[SuPeRpLuS]]></dc:creator><pubDate>Sun, 04 Nov 2007 18:01:03 GMT</pubDate></item><item><title><![CDATA[Reply to Laufzeitfehler ausserhalb des Debuggers on Sun, 04 Nov 2007 18:08:05 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">value=(TCHAR *)malloc(sizeof(val));  // &lt;- Kommt mir komisch vor!
</code></pre>
<p>Wieso sizeof(val)? Ich hätte da eher nen sizeof(TCHAR)*LängeDerZeichenkette erwartet?<br />
Rufst du auch irgendwo noch free() dafür auf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397651</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Sun, 04 Nov 2007 18:08:05 GMT</pubDate></item><item><title><![CDATA[Reply to Laufzeitfehler ausserhalb des Debuggers on Sun, 04 Nov 2007 18:37:48 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>hast recht, dort sollte eigentlich sizeof(TCHAR) stehen, hat komischerweise bisher auch so funktioniert.</p>
<p>Das free() habe ich rausgenommen weil ich dachte es läge daran, war es aber wohl nicht.</p>
<p>Gibts noch weitere Idee? Ich weiß da momentan nicht weiter ...</p>
<p>MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1397675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1397675</guid><dc:creator><![CDATA[SuPeRpLuS]]></dc:creator><pubDate>Sun, 04 Nov 2007 18:37:48 GMT</pubDate></item><item><title><![CDATA[Reply to Laufzeitfehler ausserhalb des Debuggers on Mon, 05 Nov 2007 19:58:49 GMT]]></title><description><![CDATA[<p>Wenn mir niemand sagen kann woran es liegt, kann mir dann jemand sagen wie ich es anders machen könnte damit es funktioniert? Wie würdet ihr denn einen Double in ein Textfeld schreiben?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398297</guid><dc:creator><![CDATA[SuPeRpLuS]]></dc:creator><pubDate>Mon, 05 Nov 2007 19:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Laufzeitfehler ausserhalb des Debuggers on Mon, 05 Nov 2007 23:09:43 GMT]]></title><description><![CDATA[<p>SuPeRpLuS schrieb:</p>
<blockquote>
<p>dort sollte eigentlich sizeof(TCHAR) stehen</p>
</blockquote>
<p>Dort sollte sizeof(TCHAR)*10000 stehen.<br />
10000 ist vllt. etwas übertrieben, so lang wird wohl dein double vermutlich nicht sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";D"
      alt="😉"
    /></p>
<p>Ansonsten würde ich free() wieder einbauen. free() crashed im Debug-Modus dann normalerweise wenn Blödsinn mit dem Zeiger gemacht wurde (Buffer-Overruns etc.) und man erhält meist weitere Infos (je nach Compiler-Einstellung)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398375</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Mon, 05 Nov 2007 23:09:43 GMT</pubDate></item><item><title><![CDATA[Reply to Laufzeitfehler ausserhalb des Debuggers on Tue, 06 Nov 2007 08:08:47 GMT]]></title><description><![CDATA[<p>Verwende doch bitte &quot;new TCHAR[val]&quot; anstelle von malloc!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398422</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Tue, 06 Nov 2007 08:08:47 GMT</pubDate></item><item><title><![CDATA[Reply to Laufzeitfehler ausserhalb des Debuggers on Tue, 06 Nov 2007 08:34:26 GMT]]></title><description><![CDATA[<p>Danke, jetzt klappt es!</p>
<p>Aber ist es nicht eigentlich egal, wie ich den Speicher adressiere? ob mit new oder malloc()?</p>
<p>Wo ist da der Unterschied?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398439</guid><dc:creator><![CDATA[SuPeRpLuS]]></dc:creator><pubDate>Tue, 06 Nov 2007 08:34:26 GMT</pubDate></item></channel></rss>