<?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[Lesen aus ini funzt nicht...]]></title><description><![CDATA[<p>Kann mir jemand sagen wo der Fehler ist? Die Funktion gibt nur die ersten 4 Zeichen korrekt aus und der Rest ergibt nur Müll.</p>
<pre><code class="language-cpp">PSTR ReadIni(PSTR path, PSTR entry)
{
	char buffer[500]; 

	DWORD size; 
	size=500; 

	GetPrivateProfileString(path,entry,&quot;NULL&quot;,buffer,size,file); 	return buffer;
}
</code></pre>
<p>(file wird woanders definiert - daran liegts net)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/83599/lesen-aus-ini-funzt-nicht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 13:08:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/83599.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Aug 2004 19:47:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lesen aus ini funzt nicht... on Sun, 22 Aug 2004 19:47:25 GMT]]></title><description><![CDATA[<p>Kann mir jemand sagen wo der Fehler ist? Die Funktion gibt nur die ersten 4 Zeichen korrekt aus und der Rest ergibt nur Müll.</p>
<pre><code class="language-cpp">PSTR ReadIni(PSTR path, PSTR entry)
{
	char buffer[500]; 

	DWORD size; 
	size=500; 

	GetPrivateProfileString(path,entry,&quot;NULL&quot;,buffer,size,file); 	return buffer;
}
</code></pre>
<p>(file wird woanders definiert - daran liegts net)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588586</guid><dc:creator><![CDATA[5*0rP]]></dc:creator><pubDate>Sun, 22 Aug 2004 19:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to Lesen aus ini funzt nicht... on Sun, 22 Aug 2004 20:02:45 GMT]]></title><description><![CDATA[<p>Hab das jetzt nicht ausprobiert, aber das das Null in Anführungstrichen steht und dann noch 4 Buchstaben hat, scheint mir sehr verdächtig <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=";)"
      alt="😉"
    /><br />
An dessen Stelle soll doch eigentlich ein ausreichend großer Speicherbereich übergeben werden, oder ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Edit: Hab mir die Doku nochmal angeschaut, scheint wohl doch richtig so zu sein, obwohl er bei Me/98/95 doch verändert wird trotz seiner Constant-Deklaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588597</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 22 Aug 2004 20:02:45 GMT</pubDate></item><item><title><![CDATA[Reply to Lesen aus ini funzt nicht... on Sun, 22 Aug 2004 20:01:02 GMT]]></title><description><![CDATA[<p>Du wirst es nicht glauben, aber das war auch meine erste Idee <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=";)"
      alt="😉"
    /> , hat aber nichts damit zu tun, weil das nur der default Wert ist, der zurück gegeben wird, wenn der Eintrag nicht gelesen werden kann.<br />
Ich habs jetzt grad aber hinbekommen. Ich weiß zwar nicht wo jetzt genau der Unterschied ist (hab das buffer Array einfach auf dem Heap erzeugt), aber jetzt geht es...</p>
<pre><code class="language-cpp">PSTR ReadIni(PSTR path, PSTR entry)
{
	char* pPoint;
	pPoint = new char[500]; 

	DWORD size; 
	size=500; 

	GetPrivateProfileString(path,entry,&quot;NULL&quot;,pPoint,size,file); 	return pPoint;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/588600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588600</guid><dc:creator><![CDATA[5*0rP]]></dc:creator><pubDate>Sun, 22 Aug 2004 20:01:02 GMT</pubDate></item><item><title><![CDATA[Reply to Lesen aus ini funzt nicht... on Sun, 22 Aug 2004 20:05:04 GMT]]></title><description><![CDATA[<p>Jetzt wo du das schreibst fällt es mir wie Schuppen vor die Augen:</p>
<p>Der char* pPoint; wird doch wieder freigegeben, wenn du die Funktion verlässt.</p>
<p>Passiert mir auch alle Jahre wieder <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=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/588602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588602</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 22 Aug 2004 20:05:04 GMT</pubDate></item><item><title><![CDATA[Reply to Lesen aus ini funzt nicht... on Sun, 22 Aug 2004 20:23:11 GMT]]></title><description><![CDATA[<p>Aber wird denn auch jetzt der Platz auf dem Heap wieder freigegeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588612</guid><dc:creator><![CDATA[5*0rP]]></dc:creator><pubDate>Sun, 22 Aug 2004 20:23:11 GMT</pubDate></item><item><title><![CDATA[Reply to Lesen aus ini funzt nicht... on Sun, 22 Aug 2004 20:38:40 GMT]]></title><description><![CDATA[<p>5(0rP schrieb:</p>
<blockquote>
<p>Aber wird denn auch jetzt der Platz auf dem Heap wieder freigegeben?</p>
</blockquote>
<p>Nein, das ist ja das Gefährliche.<br />
Es ensteht ein MemoryLeak, wenn du den zurückgelieferten Pointer auf den String nicht wieder freigibst.</p>
<p>Aber Achtung, dass du mit delete auch das ganze Array wieder frei gibst, und nicht den Pointer selber. (An die [] beim delete denken!!! )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588619</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 22 Aug 2004 20:38:40 GMT</pubDate></item><item><title><![CDATA[Reply to Lesen aus ini funzt nicht... on Sun, 22 Aug 2004 20:50:38 GMT]]></title><description><![CDATA[<p>Aber wie soll ich denn nach dem return noch einen delete einbauen? Die Funktion ist doch dann zuende.</p>
<p>Hmm Ich denke mal das beste wäre den Pointer global (innerhalb von meiner Klasse) zu definieren. Dann kann ich den Speicher wiederverwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588626</guid><dc:creator><![CDATA[5*0rP]]></dc:creator><pubDate>Sun, 22 Aug 2004 20:50:38 GMT</pubDate></item><item><title><![CDATA[Reply to Lesen aus ini funzt nicht... on Mon, 23 Aug 2004 08:14:14 GMT]]></title><description><![CDATA[<p>Den Speicher sollst du auch erst freigeben, nachdem die Funktion aufgerufen wurde. So:</p>
<pre><code class="language-cpp">LPSTR *pstr= ReadIni(path, entry);
//[...pstr verarbeiten...]
delete[] pstr;
</code></pre>
<p>da ist es aber wohl schöner, wenn du der Funktion gleich zwei weitere Parameter LPSTR (Adresse wo der String hin soll) und DWORD (maximale Länge vom zu lesenden String)gibst und der aufrufende Code selbst den Speicher organisiert.</p>
<p>Die Idee mit der Klasse ist eher schlecht, da du nur solange den String benutzten kannst, bis die Funktion nochmal aufgerufen wird (mehrere Threads können ohne Synchronisation auch nicht auf die selbe Instanz zugreifen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/588829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/588829</guid><dc:creator><![CDATA[D*niel *chumann]]></dc:creator><pubDate>Mon, 23 Aug 2004 08:14:14 GMT</pubDate></item><item><title><![CDATA[Reply to Lesen aus ini funzt nicht... on Mon, 23 Aug 2004 14:08:22 GMT]]></title><description><![CDATA[<p>Mit Threads arbeite sowieso noch net so viel. Damit kenn ich mich noch nicht aus.</p>
<p>Ich hab das ganze jetzt so gemacht, dass der Speicher im Destruktor meiner Klasse freigegeben wird.</p>
<p>In der Funktion weiß ich net wie ich das machen soll. Ich muss den String ja mit return zurückgeben und nach return kann ich ja schlecht noch einen Befehl zum Freigeben des Heap Speichers einbauen, weil die Funktion zuende ist. Oda gibts doch ne Möglichkeit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/589153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/589153</guid><dc:creator><![CDATA[5*0rP]]></dc:creator><pubDate>Mon, 23 Aug 2004 14:08:22 GMT</pubDate></item><item><title><![CDATA[Reply to Lesen aus ini funzt nicht... on Mon, 23 Aug 2004 19:40:23 GMT]]></title><description><![CDATA[<p>Eben die, die D@niel $chumann schon gesagt hatte - als Aufrufen Speicher reserierven und dann der Funktion nur den Pointer auf den Speicherbereich mit der Länge übergeben.</p>
<p>Dein erster Code funktioniert übrigens aus genau diesem Grund nicht, da beim Verlassen des Gültigkeitsbereichs auch der Speicher von Buffer ungültig wird / werden kann <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=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/589473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/589473</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Mon, 23 Aug 2004 19:40:23 GMT</pubDate></item><item><title><![CDATA[Reply to Lesen aus ini funzt nicht... on Mon, 23 Aug 2004 21:10:55 GMT]]></title><description><![CDATA[<p>Ach sooooo... Jetzt hab ichs kapiert. Naja, dauert halt manchmal n bissl länger. Thx, werd ich morgen mal ausprobieren. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/589551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/589551</guid><dc:creator><![CDATA[5*0rP]]></dc:creator><pubDate>Mon, 23 Aug 2004 21:10:55 GMT</pubDate></item></channel></rss>