<?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[Funktionsweise beim Erstellen eines Release bei Visual C++]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich arbeite an einem Programm mit Visual C++, welches eine Exceldatei mit einer Textdatei im .dat vergleicht.</p>
<p>Das Programm funktioniert im Debug-Modus einwandfrei, doch wenn ich eine Release-EXE erstelle, dann kommen immer Fehler.</p>
<p>Genau erklären kann ich das leider nicht, darum meine Frage, ob jmd. weiß, wo ich nachlesen kann, wie die Release-Erstellung funktioniert, damit ich weiß, warum er diesen Fehler machen könnte.</p>
<p>Ich kann das Problem ja mal grob umreißen.</p>
<p>Im Excel gibt es eine Zelle:</p>
<blockquote>
<p>projFwElementeVorZielgleis(siFsFw):<br />
projFwLage(zA):<br />
projFwRichtung(zA):<br />
projFwFmElementeVorZielgleis(zA):<br />
projFwAufloesendeElemente(zA):<br />
projTeilFwFlsElemente(zA),</p>
</blockquote>
<p>Die Werte in Klammern werden ausgelesen, damit die Parameter in der .dat einfacher verglichen werden können.</p>
<p>Im Code sieht das ungefähr so aus:<br />
in elem. strElementKlasse werden die Werte in den Klammern gespeichert, das mit &quot;zA&quot; hab ich jetzt rausgelassen, weil der Fehler bei dem &quot;siFsFw&quot; auftritt.</p>
<pre><code class="language-cpp">CString CScanStdRTDlg::GetTGFlexData(CVplKonfig &amp;elem,tTGFlexElemente Fstr,tTGFlexElemente DWeg,tTGFlexElemente *FahrwegArray)
{
	if(elem.strElementKlasse ==&quot;&quot;)
	{
		if(Fstr.m_Eigenschaften[0]!=&quot;&quot;)
			ret = gibTGFlexProj(Fstr,elem.strSICASParameter);
		else if (DWeg.m_Eigenschaften[0]!=&quot;&quot;)
			ret = gibTGFlexProj(DWeg,elem.strSICASParameter);
		else
			AfxMessageBox(&quot;offene Klasse 1&quot;, MB_OK);
	}
	else if(elem.strElementKlasse == &quot;siFsFw&quot;) // Element aus Fahrweg
	{
		for(int ArrayZaehl = 0;ArrayZaehl&lt;10;ArrayZaehl++)
		{
			if(FahrwegArray[ArrayZaehl].nAnzahlFahrwege)
			{
				if(ret.GetLength() &gt; 0)
					ret += &quot;;&quot;; // mit semikolon für die weiterverarbeitung trennen
				ret += gibTGFlexProj(FahrwegArray[ArrayZaehl],elem.strSICASParameter);
			}
			else // thk : wenn keine Fahrweg vorhanden kann abgebrochen werden 
			{
				break;
			}
		}
	}
	else
	{
		CString msg;
		msg.Format(&quot;offene Klasse 2 : %s&quot;,elem.strElementKlasse);
	//	AfxMessageBox(msg, MB_OK);
	}
	ret.Replace(&quot;'&quot;,&quot;&quot;);
	ret.Replace(&quot;)(&quot;,&quot;;&quot;);

	return ret;
}
</code></pre>
<p>Wie gesagt, normal im Code-Fenster bei der Ausführung mit F5 geht alles ohne Probleme.<br />
Mit der Exe kommt dann ein PopUp mit folgendem Fehler:</p>
<blockquote>
<p>offene Klasse 2 : siFsFw<br />
projFwLagezA<br />
projFwRichtungzA<br />
projFwFmElementeVorZielgleiszA<br />
projFwAufloesendeElementezA<br />
projTeilFwFlsElementezA</p>
</blockquote>
<p>Da alle Parameter darin vorkommen, müssten die ja irgendwo zusammengefügt werden, was aber im Code nicht gemacht wird...<br />
Darum denke ich, dass beim Erstellen des Release irgendwo was falsch läuft, aber ich finde nicht raus wo, da die Codeumgebung ohne Probleme geht.</p>
<p>Vielleicht hatte jmd. schonmal so ein Problem oder weiß, wo ich nachlesen kann.</p>
<p>MfG,</p>
<p>Thorsten</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162487/funktionsweise-beim-erstellen-eines-release-bei-visual-c</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 06:12:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162487.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Oct 2006 07:46:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionsweise beim Erstellen eines Release bei Visual C++ on Thu, 19 Oct 2006 07:46:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich arbeite an einem Programm mit Visual C++, welches eine Exceldatei mit einer Textdatei im .dat vergleicht.</p>
<p>Das Programm funktioniert im Debug-Modus einwandfrei, doch wenn ich eine Release-EXE erstelle, dann kommen immer Fehler.</p>
<p>Genau erklären kann ich das leider nicht, darum meine Frage, ob jmd. weiß, wo ich nachlesen kann, wie die Release-Erstellung funktioniert, damit ich weiß, warum er diesen Fehler machen könnte.</p>
<p>Ich kann das Problem ja mal grob umreißen.</p>
<p>Im Excel gibt es eine Zelle:</p>
<blockquote>
<p>projFwElementeVorZielgleis(siFsFw):<br />
projFwLage(zA):<br />
projFwRichtung(zA):<br />
projFwFmElementeVorZielgleis(zA):<br />
projFwAufloesendeElemente(zA):<br />
projTeilFwFlsElemente(zA),</p>
</blockquote>
<p>Die Werte in Klammern werden ausgelesen, damit die Parameter in der .dat einfacher verglichen werden können.</p>
<p>Im Code sieht das ungefähr so aus:<br />
in elem. strElementKlasse werden die Werte in den Klammern gespeichert, das mit &quot;zA&quot; hab ich jetzt rausgelassen, weil der Fehler bei dem &quot;siFsFw&quot; auftritt.</p>
<pre><code class="language-cpp">CString CScanStdRTDlg::GetTGFlexData(CVplKonfig &amp;elem,tTGFlexElemente Fstr,tTGFlexElemente DWeg,tTGFlexElemente *FahrwegArray)
{
	if(elem.strElementKlasse ==&quot;&quot;)
	{
		if(Fstr.m_Eigenschaften[0]!=&quot;&quot;)
			ret = gibTGFlexProj(Fstr,elem.strSICASParameter);
		else if (DWeg.m_Eigenschaften[0]!=&quot;&quot;)
			ret = gibTGFlexProj(DWeg,elem.strSICASParameter);
		else
			AfxMessageBox(&quot;offene Klasse 1&quot;, MB_OK);
	}
	else if(elem.strElementKlasse == &quot;siFsFw&quot;) // Element aus Fahrweg
	{
		for(int ArrayZaehl = 0;ArrayZaehl&lt;10;ArrayZaehl++)
		{
			if(FahrwegArray[ArrayZaehl].nAnzahlFahrwege)
			{
				if(ret.GetLength() &gt; 0)
					ret += &quot;;&quot;; // mit semikolon für die weiterverarbeitung trennen
				ret += gibTGFlexProj(FahrwegArray[ArrayZaehl],elem.strSICASParameter);
			}
			else // thk : wenn keine Fahrweg vorhanden kann abgebrochen werden 
			{
				break;
			}
		}
	}
	else
	{
		CString msg;
		msg.Format(&quot;offene Klasse 2 : %s&quot;,elem.strElementKlasse);
	//	AfxMessageBox(msg, MB_OK);
	}
	ret.Replace(&quot;'&quot;,&quot;&quot;);
	ret.Replace(&quot;)(&quot;,&quot;;&quot;);

	return ret;
}
</code></pre>
<p>Wie gesagt, normal im Code-Fenster bei der Ausführung mit F5 geht alles ohne Probleme.<br />
Mit der Exe kommt dann ein PopUp mit folgendem Fehler:</p>
<blockquote>
<p>offene Klasse 2 : siFsFw<br />
projFwLagezA<br />
projFwRichtungzA<br />
projFwFmElementeVorZielgleiszA<br />
projFwAufloesendeElementezA<br />
projTeilFwFlsElementezA</p>
</blockquote>
<p>Da alle Parameter darin vorkommen, müssten die ja irgendwo zusammengefügt werden, was aber im Code nicht gemacht wird...<br />
Darum denke ich, dass beim Erstellen des Release irgendwo was falsch läuft, aber ich finde nicht raus wo, da die Codeumgebung ohne Probleme geht.</p>
<p>Vielleicht hatte jmd. schonmal so ein Problem oder weiß, wo ich nachlesen kann.</p>
<p>MfG,</p>
<p>Thorsten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1157426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1157426</guid><dc:creator><![CDATA[Tupamann]]></dc:creator><pubDate>Thu, 19 Oct 2006 07:46:42 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise beim Erstellen eines Release bei Visual C++ on Thu, 19 Oct 2006 08:10:18 GMT]]></title><description><![CDATA[<p>Tupamann schrieb:</p>
<blockquote>
<p>Mit der Exe kommt dann ein PopUp mit folgendem Fehler:</p>
<blockquote>
<p>offene Klasse 2 : siFsFw<br />
...</p>
</blockquote>
</blockquote>
<p>Wenn diese Zeile aus deiner Funktion stammt, stimmt irgendwas mit deinen Bedingungen nicht (mit der Elementklasse &quot;siFsFw&quot; solltest du eigentlich im zweiten Arbeitszweig landen). Was für einen Typ hat denn CVplConfig::strElementKlasse (hoffentlich nicht char*)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1157439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1157439</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 19 Oct 2006 08:10:18 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise beim Erstellen eines Release bei Visual C++ on Thu, 19 Oct 2006 08:20:04 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>nein, strElementKlasse ist ein CString.</p>
<p>Wie kann ich denn überprüfen, wie die Variablen beladen werden, wenn ich die Release Exe starte...im Code kann man ja die StopPoints setzen, gibt es die Möglichkeit auch mit der Exe, dass ich sehen kann, was in die Variable reingeschrieben wird und der dann da den Fehler hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1157446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1157446</guid><dc:creator><![CDATA[Tupamann]]></dc:creator><pubDate>Thu, 19 Oct 2006 08:20:04 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise beim Erstellen eines Release bei Visual C++ on Thu, 19 Oct 2006 08:20:19 GMT]]></title><description><![CDATA[<p>In meiner Signatur findest du einen Link zu meinen Artikeln im Magazin.<br />
Da ist einer zum Debuggen dabei und da drin ist ein ganzes Kapitel (14) zum Debuggen einer Releaseversion und ein Link zu einer guten Beschreibung der Stolperfallen. <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/1157447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1157447</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Thu, 19 Oct 2006 08:20:19 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionsweise beim Erstellen eines Release bei Visual C++ on Thu, 19 Oct 2006 09:05:32 GMT]]></title><description><![CDATA[<p>Danke für die Hilfe.<br />
Es ist wirklich gut, dass einem hier so schnell und kompetent geholfen wird.</p>
<p>Das Problem ist gelöst und lag nicht am Quellcode.<br />
Es lag daran, dass die Exe durch eine Ini-Datei beladen wird und das Problem war, dass der Pfad der Ini komplett in die Ausführung mit reingeschrieben werden muss, da aber beide im selben Ordner liegen, dachte ich, es reicht der Dateiname mit .\ davor...<br />
Naja, wieder einen halben Arbeitstag an einem kleinen Fehler gesessen^^. Rückwärtssuchen ist leider nicht immer leicht, besonders wenn viel davor passiert ist.</p>
<p>Ich habe den kompletten Pfad integriert und jetzt geht es.</p>
<p>Vielen Dank nochmal,</p>
<p>Thorsten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1157480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1157480</guid><dc:creator><![CDATA[Tupamann]]></dc:creator><pubDate>Thu, 19 Oct 2006 09:05:32 GMT</pubDate></item></channel></rss>