<?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[Verbuggter VC++ 6.0 Compiler]]></title><description><![CDATA[<p>Hi Leute!<br />
Wollte eben ne Prüfsumme für nen Code nach dem Modulo 10 verfahren errechnen lassen. Das wollte ich mithilfe einer for schleife realisieren:</p>
<pre><code class="language-cpp">CString Code = &quot;123456789&quot;;
	char* cCode = Code.GetBuffer(9);
	CString strCode;
	int iCode=0;
	int iGesamt=0;
	for(int iStelle=0;iStelle &lt; 9;iStelle++)
	{
		strCode = cCode[iStelle];
		iCode = StrToInt(strCode);
		switch (iStelle)
		{
		case 0: iGesamt += iCode * 3; break;
		case 1: iGesamt += iCode * 1; break;
		case 2: iGesamt += iCode * 3; break;
		case 3: iGesamt += iCode * 1; break;
		case 4: iGesamt += iCode * 3; break;
		case 5: iGesamt += iCode * 1; break;
		case 6: iGesamt += iCode * 3; break;
		case 7: iGesamt += iCode * 1; break;
		case 8: iGesamt += iCode * 3; break;
		}
                  strCode=cCode;
	         strCode=strCode+=IntToStr(iGesamt%10);
	}
</code></pre>
<p>bei &quot;Kleineren&quot; Zahlen (10 Ziffern) klappt das ja noch. Wenn ich das jedoch mit 20 oder mehr ziffern mache, wird seltsamerweise die Stelle 1 nicht berechnet. Die anderen schon. Ich bin schon dem ganzen tag am verzweifeln. Ich denke es liegt ganz einfach an einem Compiler bug. Gibt es dafür updates? Wenn ja, wo?</p>
<p>Danke im voraus</p>
<p><strong>EDIT:</strong><br />
Text gehört nicht in CodeTags!<br />
<em>-dEUs</em></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/65080/verbuggter-vc-6-0-compiler</link><generator>RSS for Node</generator><lastBuildDate>Fri, 05 Jun 2026 07:54:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/65080.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 Feb 2004 17:11:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Mon, 16 Feb 2004 17:45:54 GMT]]></title><description><![CDATA[<p>Hi Leute!<br />
Wollte eben ne Prüfsumme für nen Code nach dem Modulo 10 verfahren errechnen lassen. Das wollte ich mithilfe einer for schleife realisieren:</p>
<pre><code class="language-cpp">CString Code = &quot;123456789&quot;;
	char* cCode = Code.GetBuffer(9);
	CString strCode;
	int iCode=0;
	int iGesamt=0;
	for(int iStelle=0;iStelle &lt; 9;iStelle++)
	{
		strCode = cCode[iStelle];
		iCode = StrToInt(strCode);
		switch (iStelle)
		{
		case 0: iGesamt += iCode * 3; break;
		case 1: iGesamt += iCode * 1; break;
		case 2: iGesamt += iCode * 3; break;
		case 3: iGesamt += iCode * 1; break;
		case 4: iGesamt += iCode * 3; break;
		case 5: iGesamt += iCode * 1; break;
		case 6: iGesamt += iCode * 3; break;
		case 7: iGesamt += iCode * 1; break;
		case 8: iGesamt += iCode * 3; break;
		}
                  strCode=cCode;
	         strCode=strCode+=IntToStr(iGesamt%10);
	}
</code></pre>
<p>bei &quot;Kleineren&quot; Zahlen (10 Ziffern) klappt das ja noch. Wenn ich das jedoch mit 20 oder mehr ziffern mache, wird seltsamerweise die Stelle 1 nicht berechnet. Die anderen schon. Ich bin schon dem ganzen tag am verzweifeln. Ich denke es liegt ganz einfach an einem Compiler bug. Gibt es dafür updates? Wenn ja, wo?</p>
<p>Danke im voraus</p>
<p><strong>EDIT:</strong><br />
Text gehört nicht in CodeTags!<br />
<em>-dEUs</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/460561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/460561</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Mon, 16 Feb 2004 17:45:54 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Mon, 16 Feb 2004 17:48:17 GMT]]></title><description><![CDATA[<p>lol.<br />
Das hat nix mit nem verbuggten Kompiler zu tun ...</p>
<p>Tip:<br />
Guck dir mal die Abbruchbedingung deiner for-schleife an ...<br />
Und auch dein GetBuffer ...</p>
<p>BTW: Zu jedem GetBuffer gehört auch ein ReleaseBuffer!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/460581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/460581</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Mon, 16 Feb 2004 17:48:17 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Mon, 16 Feb 2004 20:41:49 GMT]]></title><description><![CDATA[<p>dEUs schrieb:</p>
<blockquote>
<p>lol.<br />
Das hat nix mit nem verbuggten Kompiler zu tun ...</p>
<p>Tip:<br />
Guck dir mal die Abbruchbedingung deiner for-schleife an ...<br />
Und auch dein GetBuffer ...</p>
<p>BTW: Zu jedem GetBuffer gehört auch ein ReleaseBuffer!</p>
</blockquote>
<p>hmm, also die abbruch bedingung ist schon in Ordnung. Bei den kleinen Zahlenketten klappt das ja. Bloß wenn ich dann die &quot;Große&quot; Prüfzahl berechnen will (so um die 20 ziffern) tritt der oben genannte fehler auf. Jede zahl wird berechnet. stelle 0, stelle 1 wird komischerweise ausgelassen, dann gehts mit 2,3,4... usw ohne probleme weiter.</p>
<p>Wie war das mit dem release Buffer? Ich dachte Get Buffer ist dazu da, um einen in einem CString enthalten string, char kompatibel zu machen <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="😕"
    /><br />
Kann ja sein das es daran liegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/460704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/460704</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Mon, 16 Feb 2004 20:41:49 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Mon, 16 Feb 2004 20:44:41 GMT]]></title><description><![CDATA[<p>Ne daran liegts nicht. aber nachdem du diesen charbuffer nicht mehr brauchst musst du ihn freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/460707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/460707</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Mon, 16 Feb 2004 20:44:41 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Mon, 16 Feb 2004 20:44:41 GMT]]></title><description><![CDATA[<p>Ne daran liegts nicht. aber nachdem du diesen charbuffer nicht mehr brauchst musst du ihn freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/460706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/460706</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Mon, 16 Feb 2004 20:44:41 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Mon, 16 Feb 2004 20:50:06 GMT]]></title><description><![CDATA[<p>was, wenn ich es nicht tue? Verschwende ich dann nur 3kb Arbeitsspeicher, oder wirkt sich das auf das ganze programm aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/460715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/460715</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Mon, 16 Feb 2004 20:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Mon, 16 Feb 2004 20:53:17 GMT]]></title><description><![CDATA[<p>Wenn du die Variable danach nciht mehr benutzt, passiert glaub nix, aber wenn du sie wieder benutzt, könnte es sein, dass was passiert, weiss grad nimmer, was das war <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/460720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/460720</guid><dc:creator><![CDATA[dEUs]]></dc:creator><pubDate>Mon, 16 Feb 2004 20:53:17 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Mon, 16 Feb 2004 21:10:48 GMT]]></title><description><![CDATA[<p>nee, also ich denke das ist es nicht. Habe jetzt den Release Buffer angewandt, gab aber keine besserung. Was mich so verwundert ist, dass zeichen [1] immer als 0 also als &quot;&quot; string gewertet wird. Ich verstehe einfach nicht warum. Das ist auch nur bei einer Großen zeichenfolge der fall. Was könnte das sein <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="😕"
    /> <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="😕"
    /> <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/460733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/460733</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Mon, 16 Feb 2004 21:10:48 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Tue, 17 Feb 2004 05:09:43 GMT]]></title><description><![CDATA[<p>Es wäre wahrscheinlich ganz gut, wenn du mal ein konkretes, nicht funktionierendes Codebeispiel zeigen könntest. Bei mir klappt das alles prima.<br />
Wo nimmst du eigentlich IntToStr her?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/460808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/460808</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 17 Feb 2004 05:09:43 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Tue, 17 Feb 2004 12:09:42 GMT]]></title><description><![CDATA[<p>also, ich hätte den switch so gemacht:</p>
<pre><code>iGesamt += iCode * ((iStelle%2) ? 1 : 3);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/461013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/461013</guid><dc:creator><![CDATA[bbb]]></dc:creator><pubDate>Tue, 17 Feb 2004 12:09:42 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Tue, 17 Feb 2004 15:14:20 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>Es wäre wahrscheinlich ganz gut, wenn du mal ein konkretes, nicht funktionierendes Codebeispiel zeigen könntest.</p>
</blockquote>
<p>Kannst du haben:</p>
<pre><code class="language-cpp">{
	CString strChecksum=&quot;123456789012345678901234&quot;;

	char* cChecksum = strChecksum.GetBuffer(24);
	int iChecksum=0;
	int iGesamt=0;
	for(int iStelle=0;iStelle &lt;24;iStelle++)
	{
		strChecksum = cChecksum[iStelle];
		iChecksum = StrToInt(strChecksum);
		switch (iStelle)
		{
		case 0: iGesamt += iChecksum * 3; break;
		case 1: iGesamt += iChecksum * 1; break;	
		case 2: iGesamt += iChecksum * 3; break;
		case 3: iGesamt += iChecksum * 1; break;
		case 4: iGesamt += iChecksum * 3; break;
		case 5: iGesamt += iChecksum * 1; break;
		case 6: iGesamt += iChecksum * 3; break;
		case 7: iGesamt += iChecksum * 1; break;
		case 8: iGesamt += iChecksum * 3; break;
		case 9: iGesamt += iChecksum * 1; break;
		case 10: iGesamt += iChecksum * 3; break;
		case 11: iGesamt += iChecksum * 1; break;
		case 12: iGesamt += iChecksum * 3; break;
		case 13: iGesamt += iChecksum * 1; break;
		case 14: iGesamt += iChecksum * 3; break;
		case 15: iGesamt += iChecksum * 1; break;
		case 16: iGesamt += iChecksum * 3; break;
		case 17: iGesamt += iChecksum * 1; break;
		case 18: iGesamt += iChecksum * 3; break;
		case 19: iGesamt += iChecksum * 1; break;
		case 20: iGesamt += iChecksum * 3; break;
		case 21: iGesamt += iChecksum * 1; break;
		case 22: iGesamt += iChecksum * 3; break;
		case 23: iGesamt += iChecksum * 1; break;
		}
	}
		strChecksum=cChecksum;
		return strChecksum+=IntToStr(iGesamt%10);
		strChecksum.ReleaseBuffer();
}
</code></pre>
<blockquote>
<p>Wo nimmst du eigentlich IntToStr her?</p>
</blockquote>
<p>IntToStr ist eine von mir selbst geschriebene und includierte Funktion, die eine Integer Zahl in einen CString umwandelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/461263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/461263</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Tue, 17 Feb 2004 15:14:20 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Tue, 17 Feb 2004 17:40:45 GMT]]></title><description><![CDATA[<p>ähh, int2string isse nicht notwending, da die klasse CString bereits eine Methode namens Format für solch sachen zur verfügung stellt.</p>
<p>@bbb - Sehr gute lösung, mit dem kann man das ganze switch einsparen !!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/461391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/461391</guid><dc:creator><![CDATA[mammabär]]></dc:creator><pubDate>Tue, 17 Feb 2004 17:40:45 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Tue, 17 Feb 2004 17:42:32 GMT]]></title><description><![CDATA[<p>Hinweis:</p>
<p>Das return erfolgt VOR dem Release von deinem CString-Object !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/461394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/461394</guid><dc:creator><![CDATA[Ernsti]]></dc:creator><pubDate>Tue, 17 Feb 2004 17:42:32 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Tue, 17 Feb 2004 23:10:06 GMT]]></title><description><![CDATA[<p>Huhu !</p>
<p>Boah ey, was ist wenn Du ne 100-Stellige Zahl prüfen willst ?<br />
Oder wenn Du die Anzahl der Stellen vorher gar nicht kennst ?</p>
<p>Hier ein Vorschlag:</p>
<p>CString strZahl = &quot;3456789012098&quot;;<br />
int iSumme=0;</p>
<p>for(int i = 0; i &lt; strZahl.GetLength(); i++)<br />
{<br />
// wenn der Index einer Zahl gerade ist, also durch 2 ohne Rest teilbar,<br />
// dann wird diese Zahl mit 3 multipliziert, sonst mit 1<br />
if( i % 2 == 0 ) iSumme += (strZahl.GetAt(i) - '0') * 3 ;<br />
// Multiplikation mit 1 kann man sich natürlich schenken<br />
else iSumme += (strZahl.GetAt(i) - '0');<br />
}</p>
<p>// Berechnung der Prüfziffer<br />
int iPruefZiffer;</p>
<p>int iRest = iSumme % 10;<br />
if( iRest == 0) iPruefZiffer = 0;<br />
else iPruefZiffer = 10 - iRest;</p>
<p>// Ausgabe zur Kontrolle<br />
CString strMsg;<br />
strMsg.Format(&quot;Prüfziffer: %i&quot;, iPruefZiffer);<br />
AfxMessageBox(strMsg);</p>
<p>Gruß, J<sup>o</sup>e</p>
]]></description><link>https://www.c-plusplus.net/forum/post/461702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/461702</guid><dc:creator><![CDATA[J^o^e]]></dc:creator><pubDate>Tue, 17 Feb 2004 23:10:06 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Wed, 18 Feb 2004 05:32:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">{
	CString strChecksum=&quot;123456789012345678901234&quot;;

	char* cChecksum = strChecksum.GetBuffer(24);
	int iChecksum=0;
	int iGesamt=0;
	for(int iStelle=0;iStelle &lt;24;iStelle++)
	{
		strChecksum = cChecksum[iStelle]; // hier ist das Problem
</code></pre>
<p>An der kommentierten Stelle weist du strChecksum neu zu. Das ist dieselbe CString-Instanz, deren Inhalt du oben mit GetBuffer geholt hast. Die Folge ist, dass sich der Inhalt von cChecksum ändert.</p>
<p>Dein erstes Beispiel hatte dieses Problem nicht - da waren es zwei CStrings: Code und strCode.</p>
<p>Also: Nicht immer gleich auf den Compiler schimpfen. <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/461739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/461739</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 18 Feb 2004 05:32:51 GMT</pubDate></item><item><title><![CDATA[Reply to Verbuggter VC++ 6.0 Compiler on Wed, 18 Feb 2004 16:25:06 GMT]]></title><description><![CDATA[<p>Ahh danke, hattest recht!<br />
Wollte ne variable sparen :p<br />
Nu funktionierts endlich! <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="🙂"
    /> <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="🙂"
    /> <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/462289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/462289</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Wed, 18 Feb 2004 16:25:06 GMT</pubDate></item></channel></rss>