<?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[Es ist mir ein Rätsel! oder Unterschiedliches Ergebnis zwischen Debug- und Release-Modus]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>ich quäle mich schon einige Zeit mit einem Problem herum. Die unten aufgeführt Funktion soll mir ein bestimmtes Element einer char-Zeile als String zurückgeben. Die Zählung beginnt bei 1. Will ich also das 5.Element der Zeile</p>
<p>&quot;3489776.270 5985448.680 1.920 52.000 1700&quot;</p>
<p>haben, so sollte die korrekte Lösung &quot;1700&quot; sein. Im Debug-Modus funktioniert das auch prächtig. Im Release-modus bekomme ich ein leeres String zurück. Ich habe dann zum Spaß das 4. Element ausgelesen. Im Debug-Modus erhalte ich &quot;52.000&quot; im Release-Modus &quot;1700&quot;. Nochmal! Ich ändere den Code nicht sondern schalte nur zwischen Debug und Release-Modus und erhalte ein anderes Ergebnis. Wo liegt mein Fehler? Ich programmiere und Visual C++ Net 2003 Version 7.1.6030. Vielen Dank für Eure Hilfe!</p>
<pre><code class="language-cpp">int AB_important_Tools::Get_Element_string_from_char_Line(char *Line, string &amp;Element, unsigned int Pos_Element)
{
	/***************************************************************************************************
	*	Bestimmung eines Elementes (char-Array) mit vorgegebener Position in einem string 
	*	(erste Position = 1)
	*	
	*	Rückgabewerte:
	*	0		alles i.O.
	*	1		Ungültige Position
	****************************************************************************************************/

	int numberOfElements = 0, m = 0, k = 0,  count = 0, ElementXPos = -1, j=0;
	char ElementX[50];
	bool element;

	//Bestimmung der Anzahl der Elemente
	numberOfElements = Get_Number_of_Elements(Line);

	//Nullsetzen aller Elemente
	for (unsigned int Counter = 0; Counter &lt; 50; Counter++)
	{
		ElementX[Counter] = 0;
	}

	// Hier wird geprüft, ob eine gültige Position abgefragt wird
	if ((unsigned int)numberOfElements&lt;Pos_Element) return 1;

	/****************************************************************
	*	Bestimmung der einzelnen Zahlen des Elementes
	*****************************************************************/
	while(k&lt;(int)strlen(Line))
	{
		m = (int)Line[k];

		if((m == 9) || (m == 32))
		{
			element = false;
		}
		else
		{
			if(!element)
			{
				element = true; count++;
			}
		}

		if(count == Pos_Element &amp;&amp; (m!=9) &amp;&amp; (m!=32)) 
		{
			if((m!=46 &amp;&amp; m&lt;48) || (m!=46 &amp;&amp; m&gt;57))
			{
				return 2;
			}
			ElementXPos++; ElementX[ElementXPos] = Line[k];
		}
		k++;
	}

	Element = ElementX;
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/170152/es-ist-mir-ein-rätsel-oder-unterschiedliches-ergebnis-zwischen-debug-und-release-modus</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 00:57:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170152.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Jan 2007 10:36:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Es ist mir ein Rätsel! oder Unterschiedliches Ergebnis zwischen Debug- und Release-Modus on Fri, 12 Jan 2007 10:36:29 GMT]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>ich quäle mich schon einige Zeit mit einem Problem herum. Die unten aufgeführt Funktion soll mir ein bestimmtes Element einer char-Zeile als String zurückgeben. Die Zählung beginnt bei 1. Will ich also das 5.Element der Zeile</p>
<p>&quot;3489776.270 5985448.680 1.920 52.000 1700&quot;</p>
<p>haben, so sollte die korrekte Lösung &quot;1700&quot; sein. Im Debug-Modus funktioniert das auch prächtig. Im Release-modus bekomme ich ein leeres String zurück. Ich habe dann zum Spaß das 4. Element ausgelesen. Im Debug-Modus erhalte ich &quot;52.000&quot; im Release-Modus &quot;1700&quot;. Nochmal! Ich ändere den Code nicht sondern schalte nur zwischen Debug und Release-Modus und erhalte ein anderes Ergebnis. Wo liegt mein Fehler? Ich programmiere und Visual C++ Net 2003 Version 7.1.6030. Vielen Dank für Eure Hilfe!</p>
<pre><code class="language-cpp">int AB_important_Tools::Get_Element_string_from_char_Line(char *Line, string &amp;Element, unsigned int Pos_Element)
{
	/***************************************************************************************************
	*	Bestimmung eines Elementes (char-Array) mit vorgegebener Position in einem string 
	*	(erste Position = 1)
	*	
	*	Rückgabewerte:
	*	0		alles i.O.
	*	1		Ungültige Position
	****************************************************************************************************/

	int numberOfElements = 0, m = 0, k = 0,  count = 0, ElementXPos = -1, j=0;
	char ElementX[50];
	bool element;

	//Bestimmung der Anzahl der Elemente
	numberOfElements = Get_Number_of_Elements(Line);

	//Nullsetzen aller Elemente
	for (unsigned int Counter = 0; Counter &lt; 50; Counter++)
	{
		ElementX[Counter] = 0;
	}

	// Hier wird geprüft, ob eine gültige Position abgefragt wird
	if ((unsigned int)numberOfElements&lt;Pos_Element) return 1;

	/****************************************************************
	*	Bestimmung der einzelnen Zahlen des Elementes
	*****************************************************************/
	while(k&lt;(int)strlen(Line))
	{
		m = (int)Line[k];

		if((m == 9) || (m == 32))
		{
			element = false;
		}
		else
		{
			if(!element)
			{
				element = true; count++;
			}
		}

		if(count == Pos_Element &amp;&amp; (m!=9) &amp;&amp; (m!=32)) 
		{
			if((m!=46 &amp;&amp; m&lt;48) || (m!=46 &amp;&amp; m&gt;57))
			{
				return 2;
			}
			ElementXPos++; ElementX[ElementXPos] = Line[k];
		}
		k++;
	}

	Element = ElementX;
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1208562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208562</guid><dc:creator><![CDATA[Redone]]></dc:creator><pubDate>Fri, 12 Jan 2007 10:36:29 GMT</pubDate></item><item><title><![CDATA[Reply to Es ist mir ein Rätsel! oder Unterschiedliches Ergebnis zwischen Debug- und Release-Modus on Fri, 12 Jan 2007 23:01:55 GMT]]></title><description><![CDATA[<p>Ohne mir jetzt grade die Details anzuschauen:<br />
a) was hat das mit &quot;C++/CLI mit .NET&quot; zu tun?<br />
b) Kannst du mir mal sagen wo du die Variable &quot;element&quot; vor der ersten Verwendung<br />
initialisierst (Im Degugmodus wird diese in der Regel vom Compiler vorbelegt,<br />
in der Releaseversion ist diese undefiniert - sprich was grad in der<br />
Speicherstelle steht).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1209097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209097</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 12 Jan 2007 23:01:55 GMT</pubDate></item><item><title><![CDATA[Reply to Es ist mir ein Rätsel! oder Unterschiedliches Ergebnis zwischen Debug- und Release-Modus on Sat, 13 Jan 2007 08:47:00 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=18363" rel="nofollow">Jochen Kalmbach</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=58" rel="nofollow">C++/CLI mit .NET</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1209158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209158</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sat, 13 Jan 2007 08:47:00 GMT</pubDate></item><item><title><![CDATA[Reply to Es ist mir ein Rätsel! oder Unterschiedliches Ergebnis zwischen Debug- und Release-Modus on Sat, 13 Jan 2007 16:28:48 GMT]]></title><description><![CDATA[<p>asc Adlerauge, hm? (ich hätte das jetzt nicht gesehen <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 />
Ja, tut er garnicht, und genau das ist das Problem.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5948">@Redone</a>:<br />
Du musst element mit &quot;true&quot; initialisieren.<br />
Und du solltest vor der while Schleife noch alle Spaces und Tabs überspringen, sonst wird von der Funktion eine Reihe Spaces/Tabs als Element gezählt.</p>
<p>Im Übrigen kannst du wenn du schon mit nullterminierten Strings arbeitest das Abbruchkriterium für die Schleife ändern:</p>
<pre><code class="language-cpp">//while(k&lt;(int)strlen(Line))
// wird zu
while(Line[k])
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1209288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209288</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 13 Jan 2007 16:28:48 GMT</pubDate></item><item><title><![CDATA[Reply to Es ist mir ein Rätsel! oder Unterschiedliches Ergebnis zwischen Debug- und Release-Modus on Sat, 13 Jan 2007 16:34:18 GMT]]></title><description><![CDATA[<p>Nebenbei, sowas:</p>
<pre><code class="language-cpp">while(k&lt;(int)strlen(Line))
</code></pre>
<p>ist sträflich... (gleiches gilt für Abbruchbedingung in einer for-schleife)</p>
<p>Die Abbruchbedingung wir bei jedem Schleifendurchlauf neu berrechnet, wenn Du also z.B. einen String von 1000 Zeichen parsed, berrechnest Du hier 1000 mal strlen.</p>
<p>Sowas kann der Compiler auch nicht wegoptimieren, weil Line nicht const ist und daher die strlen ja bei jedem Schleifendurchlauf anders sein könnte...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1209293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209293</guid><dc:creator><![CDATA[Erbenszähler]]></dc:creator><pubDate>Sat, 13 Jan 2007 16:34:18 GMT</pubDate></item><item><title><![CDATA[Reply to Es ist mir ein Rätsel! oder Unterschiedliches Ergebnis zwischen Debug- und Release-Modus on Sat, 13 Jan 2007 17:47:43 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>asc Adlerauge, hm? (ich hätte das jetzt nicht gesehen <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>
</blockquote>
<p>Nein, weniger Adlerauge als die eigene Erfahrungen aus Hobby und Beruf :p</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1209319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209319</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sat, 13 Jan 2007 17:47:43 GMT</pubDate></item></channel></rss>