<?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[Problem mit WritePrivateProfileString]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich schreibe mir zur Zeit einen kleinen Rechner um festzuhalten wieviele Urlaubstage ich noch habe (ja nicht besonders nützlich, aber es geht um den Lerneffekt).<br />
Dabei verwende ich &quot;WritePrivateProfileString&quot; und &quot;GetPrivateProfileString&quot;.</p>
<p>Wenn ich das Programm starte kommt allerdings direkt eine Meldung von Windows dass das Programm ein Problem verursacht hat und beendet werden muss.<br />
Der Compiler liefert keine Fehlermeldung.</p>
<p>Hier mal der Code:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;Windows.h&gt;
using namespace std;

int main()
{
	int tage, frei;
	string eingabe;
	char *grund;
	DWORD size;
	size = 5;
	tage = 28;

	//GetPrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,&quot;NULL&quot;,tage,size,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,(char*)tage,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	cout &lt;&lt; &quot;[-----Urlaubstagerechner-----]&quot; &lt;&lt; endl &lt;&lt; endl;
	cout &lt;&lt; &quot;Restliche Urlaubstage: &quot; &lt;&lt; tage &lt;&lt; endl;
	cout &lt;&lt; &quot;zu buchende Urlaubstage: &quot;;
	cin &gt;&gt; frei;
	tage = tage-frei;
	WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,(char*)tage,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	cout &lt;&lt; &quot;\nGrund: &quot;;
	cin &gt;&gt; eingabe;
	strcpy(grund, eingabe.c_str());
	WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Grund&quot;,grund,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	return 0;
}
</code></pre>
<p>Zur Info: ich verwende Code::Blocks und den GNU GCC Compiler</p>
<p>Ich hoffe mir kann jemand weiterhelfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202818/problem-mit-writeprivateprofilestring</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 06:29:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202818.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Jan 2008 18:28:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit WritePrivateProfileString on Tue, 15 Jan 2008 18:28:19 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich schreibe mir zur Zeit einen kleinen Rechner um festzuhalten wieviele Urlaubstage ich noch habe (ja nicht besonders nützlich, aber es geht um den Lerneffekt).<br />
Dabei verwende ich &quot;WritePrivateProfileString&quot; und &quot;GetPrivateProfileString&quot;.</p>
<p>Wenn ich das Programm starte kommt allerdings direkt eine Meldung von Windows dass das Programm ein Problem verursacht hat und beendet werden muss.<br />
Der Compiler liefert keine Fehlermeldung.</p>
<p>Hier mal der Code:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;Windows.h&gt;
using namespace std;

int main()
{
	int tage, frei;
	string eingabe;
	char *grund;
	DWORD size;
	size = 5;
	tage = 28;

	//GetPrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,&quot;NULL&quot;,tage,size,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,(char*)tage,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	cout &lt;&lt; &quot;[-----Urlaubstagerechner-----]&quot; &lt;&lt; endl &lt;&lt; endl;
	cout &lt;&lt; &quot;Restliche Urlaubstage: &quot; &lt;&lt; tage &lt;&lt; endl;
	cout &lt;&lt; &quot;zu buchende Urlaubstage: &quot;;
	cin &gt;&gt; frei;
	tage = tage-frei;
	WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,(char*)tage,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	cout &lt;&lt; &quot;\nGrund: &quot;;
	cin &gt;&gt; eingabe;
	strcpy(grund, eingabe.c_str());
	WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Grund&quot;,grund,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	return 0;
}
</code></pre>
<p>Zur Info: ich verwende Code::Blocks und den GNU GCC Compiler</p>
<p>Ich hoffe mir kann jemand weiterhelfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437224</guid><dc:creator><![CDATA[artificial]]></dc:creator><pubDate>Tue, 15 Jan 2008 18:28:19 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit WritePrivateProfileString on Tue, 15 Jan 2008 18:43:17 GMT]]></title><description><![CDATA[<p>(char*)tage<br />
Nen Cast reicht da nicht, du musst schon die Zahl in eine Zeichenkette konvertieren. (w)sprintf() oder itoa() oder sowas.</p>
<p>strcpy(grund, eingabe.c_str());<br />
grund ist nur ein Zeiger, der momentan irgendwohin zeigt!<br />
Du solltest dafür sorgen der der grund-Zeiger auch auf von dir reservierten Speicher zeigt. (malloc() z.B.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437232</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Tue, 15 Jan 2008 18:43:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit WritePrivateProfileString on Tue, 15 Jan 2008 19:27:18 GMT]]></title><description><![CDATA[<p>Ich denke itoa() habe ich nun richtig verwendet.<br />
Allerdings macht malloc() Probleme.<br />
Dass es speicherplatz reserviert habe ich verstanden aber wie man die Funktion genau verwenden muss weiß ich nicht.</p>
<p>Das ganze sieht jetzt folgendermaßen aus:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;Windows.h&gt;
using namespace std;

int main()
{
	int i, j;
	//string eingabe;
	char *grund, *tage, *frei;
	grund = (char *) malloc(1000);
	//DWORD size;
	//size = 5;
	i = 28;

	//GetPrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,&quot;NULL&quot;,tage,size,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,itoa(i, tage, 2),&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	cout &lt;&lt; &quot;[-----Urlaubstagerechner-----]&quot; &lt;&lt; endl &lt;&lt; endl;
	cout &lt;&lt; &quot;Restliche Urlaubstage: &quot; &lt;&lt; i &lt;&lt; endl;
	cout &lt;&lt; &quot;zu buchende Urlaubstage: &quot;;
	cin &gt;&gt; j;
	i = i-j;
	WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,itoa(i, tage, 2),&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	cout &lt;&lt; &quot;\nGrund: &quot;;
	cin &gt;&gt; grund;
	//strcpy(grund, eingabe.c_str());
	WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Grund&quot;,grund,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\setting.ini&quot;);

	return 0;
}
</code></pre>
<p>Der Fehler den ich schon oben beschrieben habe taucht immer noch auf.<br />
Leider verstehe ich auch nicht warum WritePrivateProfileString() überhaupt const char* erwartet und nicht einfach einen String.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437252</guid><dc:creator><![CDATA[artificial]]></dc:creator><pubDate>Tue, 15 Jan 2008 19:27:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit WritePrivateProfileString on Tue, 15 Jan 2008 22:02:12 GMT]]></title><description><![CDATA[<p><a href="http://www.cprogramming.com/tutorial/c/lesson6.html" rel="nofollow">http://www.cprogramming.com/tutorial/c/lesson6.html</a></p>
<p>Als 3. Parameter willst du vermutlich statt 2 eher 10 angeben.<br />
Mit &quot;tage&quot; bekommst du dasselbe Problem wie bei grund <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="😉"
    /><br />
Du sagst itoa() quasi als 2. Parameter wohin er die Zeichenkette im Speicher platzieren darf.<br />
Für tage hast du allerdings keinen Speicher reserviert und zeigt noch irgendwohin.</p>
<p>malloc() hast du quasi richtig verwendet. Du hast 1000 Bytes Speicher reserviert und grund zeigt jetzt auf den reservierten Speicher statt irgendwohin.<br />
Wenn du den Speicher nicht mehr brauchst einfach mittels free() wieder freigeben.</p>
<p>WritePrivateProfileString() und GetPrivateProfileString() sind beides WinAPI-Funktionen, WinAPI ist allerdings in C. Daher will es char* <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>Du scheinst eher C++ als C zu nutzen:<br />
Statt malloc()/free() kannst du auch new/delete benutzen:<br />
<a href="http://tutorial.schornboeck.net/dyn_speicher.htm" rel="nofollow">http://tutorial.schornboeck.net/dyn_speicher.htm</a></p>
<p>Wenn die Größe ohnehin feststeht auch einfach:<br />
char grund[1000];<br />
...und du kannst dir Speicherreservierung sparen (da es für dich erledigt wird).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437313</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Tue, 15 Jan 2008 22:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit WritePrivateProfileString on Wed, 16 Jan 2008 18:20:41 GMT]]></title><description><![CDATA[<p>Danke erstmal für deine Hilfe.<br />
Mit new und delete komm ich wesentlich besser klar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Jetzt funktioniert soweit alles.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437932</guid><dc:creator><![CDATA[artificial]]></dc:creator><pubDate>Wed, 16 Jan 2008 18:20:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit WritePrivateProfileString on Tue, 22 Jan 2008 17:09:10 GMT]]></title><description><![CDATA[<p>Ich werde den Thread hier einfach mal für ein weiteres Problem von mir bei diesem Programm nutzen.</p>
<p>Folgendermaßen sieht es mittlerweile aus:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;Windows.h&gt;
using namespace std;

int main()
{
	int i, j;
	string eingabe;
	char *grund, *tage;
    tage = new char[10];

    GetPrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,&quot;NULL&quot;,itoa(i, tage, 10),10,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\settings.ini&quot;);

    if (tage == &quot;NULL&quot;)
        i = 28;

	WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,itoa(i, tage, 10),&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\settings.ini&quot;);

	cout &lt;&lt; &quot;\n[-----Urlaubstagerechner-----]\n&quot; &lt;&lt; endl;
	cout &lt;&lt; &quot;Restliche Urlaubstage: &quot; &lt;&lt; i &lt;&lt; endl;
	cout &lt;&lt; &quot;zu buchende Urlaubstage: &quot;;
	cin &gt;&gt; j;

	while (i&lt;j) {
	    cout &lt;&lt; &quot;Nicht mehr genug Urlaubstage!\n&quot;;
	    cout &lt;&lt; &quot;zu buchende Urlaubstage: &quot;;
	    cin &gt;&gt; j;
	}

    i = i-j;
    WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Tage&quot;,itoa(i, tage, 10),&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\settings.ini&quot;);

	cout &lt;&lt; &quot;\nGrund: &quot;;
	cin &gt;&gt; eingabe;
	grund = new char[sizeof(eingabe)];
    strcpy(grund, eingabe.c_str());

	WritePrivateProfileString(&quot;Urlaub&quot;,&quot;Grund&quot;,grund,&quot;E:\\Coding\\C++ Projects\\Urlaubsrechner\\settings.ini&quot;);

    delete tage;
    delete grund;

	return 0;
}
</code></pre>
<p>Ich hätte gern nur einen Teil hier rein kopiert aber da ich keine Ahnung habe wo der Fehler liegt musste es alles sein.</p>
<p>Wenn ich das Programm starte gibt er mir von vorneherein vor, dass ich noch 8 Urlaubstage habe, auch wenn ich die .ini-Datei lösche und komplett neu anlegen lasse.<br />
Kann mir jemand sagen woran das liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441450</guid><dc:creator><![CDATA[artificial]]></dc:creator><pubDate>Tue, 22 Jan 2008 17:09:10 GMT</pubDate></item></channel></rss>