<?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[Programm stürt beim Schliessen einer Else Abfrage ab]]></title><description><![CDATA[<p>moin</p>
<p>bin grad etwas am verzweifeln ...<br />
ich hab nen programm das beim schliessen einer else-abfrage abstürzt...</p>
<pre><code>if(cmd.CompareNoCase(&quot;WOLKE_I2&quot;)==0){
		int len=0;
		CString cmd=&quot;&quot;;
		CString cmd_return=&quot;&quot;;
		CString cmd_return_soll=&quot;&quot;;
		CString cmd_return_soll2=&quot;&quot;;
		CString var=&quot;&quot;;
		int stelle=0;
		int stelle_wert=0;

		if(anz_param==1){
			cmd_return_soll=param[0];
		}	
		if(anz_param==2){
			cmd_return_soll=param[0];
			cmd_return_soll2=param[1];
		}	
		if(anz_param==3){
			var=param[0];
			stelle=atoi(param[1]);
			stelle_wert=atoi(param[2]);
		}
		cmd=&quot;I2&quot;;

		CString cmd_erg;
		cmd_erg=cmd+&quot;&quot;+ConvertStringHexToChar(&quot;04&quot;);
		len=cmd.GetLength()+2;
		char * buf = new char[len];
		memcpy(buf,cmd_erg, len);

		ret=SendBlock(s, buf,len);

		char *recvbuffer=NULL;
		recvbuffer = new char[1024];
		rc=recv(s,recvbuffer,1024,0);
		if(rc==SOCKET_ERROR) {
			CString str;
			str.Format(&quot;%d&quot;,WSAGetLastError());
			ausg.Format(&quot;(WOLKE_I2)-%s %s&quot;,txt-&gt;ausgabe53, str);
			SetAnzeigeText(ausg,0);
			SetErrorText(ausg);
			delete[] recvbuffer;
			delete[] buf;
		}else{
			recvbuffer[rc]='\0';
			CString tmp=&quot;&quot;, tmp2=&quot;&quot;;

			for(int xx=1; xx&lt;rc; xx++){
				tmp.Format(&quot;%x&quot;, recvbuffer[xx]);
				if(tmp.GetLength()&lt;2){
					tmp=&quot;0&quot;+tmp;
				}
				if(tmp.GetLength()&gt;2){
					CString tmp3=&quot;&quot;;
					for(int iy=tmp.GetLength()-2; iy&lt;tmp.GetLength(); iy++){
						tmp3=tmp3+tmp.GetAt(iy);
					}
					tmp=tmp3;
				}
				if(xx&lt;(rc-1)){
					tmp=tmp+&quot; &quot;;
				}
				tmp2=tmp2+tmp;
			}
			delete[] recvbuffer;
			delete[] buf;

			if(anz_param==1){
				if(tmp2.CompareNoCase(cmd_return_soll)==0){
					ret=TRUE;
				}else{
					ret=FALSE;
				}
			}
			if(anz_param==2){
				if(tmp2.CompareNoCase(cmd_return_soll)==0 || tmp2.CompareNoCase(cmd_return_soll2)==0){
				}else{
					ret=FALSE;
				}
			}

			ret=FALSE;
			if(anz_param==3){
				if(var.CompareNoCase(&quot;BIN&quot;)==0){

SetAnzeigeText(tmp2,0);

					//char erg=ConvertStringHexToChar(tmp2);
					char erg_1=ConvertStringHexToChar(&quot;04&quot;);

					int verg=0;
					verg=erg_1&amp;(int)pow((double)2,(double)stelle);

CString ausg_tmp;
ausg_tmp.Format(&quot;%i %i %c&quot;, verg, stelle, erg_1);
SetAnzeigeText(ausg_tmp,0);

					if(verg&gt;=0){
SetAnzeigeText(&quot;1&quot;,0);
						if(verg==0){
SetAnzeigeText(&quot;2&quot;,0);						
							if(stelle_wert==0){
SetAnzeigeText(&quot;3&quot;,0);						
								ret=TRUE;
SetAnzeigeText(&quot;3_1&quot;,0);						
							}else{
SetAnzeigeText(&quot;4&quot;,0);						
								/*CString meldung;
								meldung.Format(&quot;Fehler: %s&quot;,tmp2);
								AfxMessageBox(meldung);*/
								ret=FALSE;
							}
						}else{
SetAnzeigeText(&quot;5&quot;,0);						
							if(stelle_wert==0){
SetAnzeigeText(&quot;6&quot;,0);						
								/*CString meldung;
								meldung.Format(&quot;Fehler: %s&quot;,tmp2);
								AfxMessageBox(meldung);*/
								ret=FALSE;
							}else{
SetAnzeigeText(&quot;7&quot;,0);						
								ret=TRUE;
							}
						}
					}else{
SetAnzeigeText(&quot;8&quot;,0);
						ret=FALSE;
					}
SetAnzeigeText(&quot;9&quot;,0);
				}
SetAnzeigeText(&quot;10&quot;,0);
			}
SetAnzeigeText(&quot;11&quot;,0);
		}
SetAnzeigeText(&quot;12&quot;,0);
	}
</code></pre>
<p>zur kurzen erklärung:<br />
SetAnzeigeText = ausgaben in nem extra fenster...<br />
ausgegeben wird:<br />
1<br />
2<br />
3<br />
3_1<br />
9<br />
10<br />
11<br />
&lt;-- dann kommt der absturz...<br />
und das is eben genau das was ich net versteh...<br />
zwischen 11 und 12 schliess ich nur den else zweig den ich mit</p>
<pre><code>if(rc==SOCKET_ERROR) {
			CString str;
			str.Format(&quot;%d&quot;,WSAGetLastError());
			ausg.Format(&quot;(WOLKE_I2)-%s %s&quot;,txt-&gt;ausgabe53, str);
			SetAnzeigeText(ausg,0);
			SetErrorText(ausg);
			delete[] recvbuffer;
			delete[] buf;
		}else{
</code></pre>
<p>aufmache ... wie kann mein programm da abstürzen???<br />
wenn ich das debugge (das debuggen is mir leider unter visual studio 8.0 nen arges rätsel daher mein ich den debuggknopf bei der windwos meldung kommt als meldung das der absturz bei nem unzulässigen schreibzugriff passiert is )<br />
nur da schreib ich doch gar nix ...</p>
<p>also mir echt nen arges rätsel<br />
ich würde mich über ansatzpunkte freuen (bitte net so einfache wie kontrollier mal die auf und zu klammern ... sowas is natürlich alles schon gecheckt)</p>
<p>vielen dank für eure hilfe<br />
LT</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278050/programm-stürt-beim-schliessen-einer-else-abfrage-ab</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 14:40:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278050.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Nov 2010 10:29:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programm stürt beim Schliessen einer Else Abfrage ab on Mon, 29 Nov 2010 10:29:52 GMT]]></title><description><![CDATA[<p>moin</p>
<p>bin grad etwas am verzweifeln ...<br />
ich hab nen programm das beim schliessen einer else-abfrage abstürzt...</p>
<pre><code>if(cmd.CompareNoCase(&quot;WOLKE_I2&quot;)==0){
		int len=0;
		CString cmd=&quot;&quot;;
		CString cmd_return=&quot;&quot;;
		CString cmd_return_soll=&quot;&quot;;
		CString cmd_return_soll2=&quot;&quot;;
		CString var=&quot;&quot;;
		int stelle=0;
		int stelle_wert=0;

		if(anz_param==1){
			cmd_return_soll=param[0];
		}	
		if(anz_param==2){
			cmd_return_soll=param[0];
			cmd_return_soll2=param[1];
		}	
		if(anz_param==3){
			var=param[0];
			stelle=atoi(param[1]);
			stelle_wert=atoi(param[2]);
		}
		cmd=&quot;I2&quot;;

		CString cmd_erg;
		cmd_erg=cmd+&quot;&quot;+ConvertStringHexToChar(&quot;04&quot;);
		len=cmd.GetLength()+2;
		char * buf = new char[len];
		memcpy(buf,cmd_erg, len);

		ret=SendBlock(s, buf,len);

		char *recvbuffer=NULL;
		recvbuffer = new char[1024];
		rc=recv(s,recvbuffer,1024,0);
		if(rc==SOCKET_ERROR) {
			CString str;
			str.Format(&quot;%d&quot;,WSAGetLastError());
			ausg.Format(&quot;(WOLKE_I2)-%s %s&quot;,txt-&gt;ausgabe53, str);
			SetAnzeigeText(ausg,0);
			SetErrorText(ausg);
			delete[] recvbuffer;
			delete[] buf;
		}else{
			recvbuffer[rc]='\0';
			CString tmp=&quot;&quot;, tmp2=&quot;&quot;;

			for(int xx=1; xx&lt;rc; xx++){
				tmp.Format(&quot;%x&quot;, recvbuffer[xx]);
				if(tmp.GetLength()&lt;2){
					tmp=&quot;0&quot;+tmp;
				}
				if(tmp.GetLength()&gt;2){
					CString tmp3=&quot;&quot;;
					for(int iy=tmp.GetLength()-2; iy&lt;tmp.GetLength(); iy++){
						tmp3=tmp3+tmp.GetAt(iy);
					}
					tmp=tmp3;
				}
				if(xx&lt;(rc-1)){
					tmp=tmp+&quot; &quot;;
				}
				tmp2=tmp2+tmp;
			}
			delete[] recvbuffer;
			delete[] buf;

			if(anz_param==1){
				if(tmp2.CompareNoCase(cmd_return_soll)==0){
					ret=TRUE;
				}else{
					ret=FALSE;
				}
			}
			if(anz_param==2){
				if(tmp2.CompareNoCase(cmd_return_soll)==0 || tmp2.CompareNoCase(cmd_return_soll2)==0){
				}else{
					ret=FALSE;
				}
			}

			ret=FALSE;
			if(anz_param==3){
				if(var.CompareNoCase(&quot;BIN&quot;)==0){

SetAnzeigeText(tmp2,0);

					//char erg=ConvertStringHexToChar(tmp2);
					char erg_1=ConvertStringHexToChar(&quot;04&quot;);

					int verg=0;
					verg=erg_1&amp;(int)pow((double)2,(double)stelle);

CString ausg_tmp;
ausg_tmp.Format(&quot;%i %i %c&quot;, verg, stelle, erg_1);
SetAnzeigeText(ausg_tmp,0);

					if(verg&gt;=0){
SetAnzeigeText(&quot;1&quot;,0);
						if(verg==0){
SetAnzeigeText(&quot;2&quot;,0);						
							if(stelle_wert==0){
SetAnzeigeText(&quot;3&quot;,0);						
								ret=TRUE;
SetAnzeigeText(&quot;3_1&quot;,0);						
							}else{
SetAnzeigeText(&quot;4&quot;,0);						
								/*CString meldung;
								meldung.Format(&quot;Fehler: %s&quot;,tmp2);
								AfxMessageBox(meldung);*/
								ret=FALSE;
							}
						}else{
SetAnzeigeText(&quot;5&quot;,0);						
							if(stelle_wert==0){
SetAnzeigeText(&quot;6&quot;,0);						
								/*CString meldung;
								meldung.Format(&quot;Fehler: %s&quot;,tmp2);
								AfxMessageBox(meldung);*/
								ret=FALSE;
							}else{
SetAnzeigeText(&quot;7&quot;,0);						
								ret=TRUE;
							}
						}
					}else{
SetAnzeigeText(&quot;8&quot;,0);
						ret=FALSE;
					}
SetAnzeigeText(&quot;9&quot;,0);
				}
SetAnzeigeText(&quot;10&quot;,0);
			}
SetAnzeigeText(&quot;11&quot;,0);
		}
SetAnzeigeText(&quot;12&quot;,0);
	}
</code></pre>
<p>zur kurzen erklärung:<br />
SetAnzeigeText = ausgaben in nem extra fenster...<br />
ausgegeben wird:<br />
1<br />
2<br />
3<br />
3_1<br />
9<br />
10<br />
11<br />
&lt;-- dann kommt der absturz...<br />
und das is eben genau das was ich net versteh...<br />
zwischen 11 und 12 schliess ich nur den else zweig den ich mit</p>
<pre><code>if(rc==SOCKET_ERROR) {
			CString str;
			str.Format(&quot;%d&quot;,WSAGetLastError());
			ausg.Format(&quot;(WOLKE_I2)-%s %s&quot;,txt-&gt;ausgabe53, str);
			SetAnzeigeText(ausg,0);
			SetErrorText(ausg);
			delete[] recvbuffer;
			delete[] buf;
		}else{
</code></pre>
<p>aufmache ... wie kann mein programm da abstürzen???<br />
wenn ich das debugge (das debuggen is mir leider unter visual studio 8.0 nen arges rätsel daher mein ich den debuggknopf bei der windwos meldung kommt als meldung das der absturz bei nem unzulässigen schreibzugriff passiert is )<br />
nur da schreib ich doch gar nix ...</p>
<p>also mir echt nen arges rätsel<br />
ich würde mich über ansatzpunkte freuen (bitte net so einfache wie kontrollier mal die auf und zu klammern ... sowas is natürlich alles schon gecheckt)</p>
<p>vielen dank für eure hilfe<br />
LT</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987388</guid><dc:creator><![CDATA[LordTerra]]></dc:creator><pubDate>Mon, 29 Nov 2010 10:29:52 GMT</pubDate></item><item><title><![CDATA[Reply to Programm stürt beim Schliessen einer Else Abfrage ab on Mon, 29 Nov 2010 10:51:27 GMT]]></title><description><![CDATA[<p>1. Das ist kein C, sondern C++. Wahrscheinlich sogar noch besser bei MFC aufgehoben.<br />
2. Was funktioniert beim Debugger nicht?<br />
3. Nimm statt char*, lieber vector&lt;char&gt; für deine Buffer. Und greife dann zumindest beim Debuggen über at() auf die Elemente zu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987398</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Mon, 29 Nov 2010 10:51:27 GMT</pubDate></item><item><title><![CDATA[Reply to Programm stürt beim Schliessen einer Else Abfrage ab on Mon, 29 Nov 2010 11:11:03 GMT]]></title><description><![CDATA[<p>LordTerra schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if(rc == SOCKET_ERROR)
{
            ...
            delete[] recvbuffer;
            delete[] buf;
}
else{
...
}
delete[] recvbuffer;
delete[] buf;
</code></pre>
</blockquote>
<p>Falls rc == SOCKET_ERROR ist, dann löscht du den buffer 2 mal -&gt; fehler!<br />
Setze noch delete[] recvbuffer; und delete[]buf in else{}</p>
<p>Kann dir aber nicht sagen ob das die lösung zu deinem Problem ist !!!</p>
<p>Gruss Sheldor</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987408</guid><dc:creator><![CDATA[Sheldor]]></dc:creator><pubDate>Mon, 29 Nov 2010 11:11:03 GMT</pubDate></item><item><title><![CDATA[Reply to Programm stürt beim Schliessen einer Else Abfrage ab on Mon, 29 Nov 2010 11:17:09 GMT]]></title><description><![CDATA[<p>Das Problem lässt sich ganz elegant umgehen, wenn man ungültige Zeiger NULL setzt und vor der Dereferenzierung prüft. Noch eleganter wäre in dem Buffer-Fall aber die Variante mit dem vector.<br />
Und am Elegantesten wäre es gleich mit smart-pointern zu arbeiten. <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 />
Falls du das vor hast mal zu probieren, nimm den shared_ptr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987409</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Mon, 29 Nov 2010 11:17:09 GMT</pubDate></item><item><title><![CDATA[Reply to Programm stürt beim Schliessen einer Else Abfrage ab on Mon, 29 Nov 2010 11:30:56 GMT]]></title><description><![CDATA[<p>Nick Unbekannt schrieb:</p>
<blockquote>
<p>1. Das ist kein C, sondern C++. Wahrscheinlich sogar noch besser bei MFC aufgehoben.<br />
2. Was funktioniert beim Debugger nicht?<br />
3. Nimm statt char*, lieber vector&lt;char&gt; für deine Buffer. Und greife dann zumindest beim Debuggen über at() auf die Elemente zu.</p>
</blockquote>
<p>1.) hmmm jo kann sein<br />
2.) ganz ehrlich: keine ahnung der funktioniert nicht ...<br />
wenn ich auf debuffen klicke bekomm ich fehlermeldung:</p>
<p>Für &quot;AVS2FW.exe&quot; können keine Debuginformationen gefunden werden oder sie stimmen nicht überein. Die Binärdaten wurden nicht mit Debuginformationen erstellt.</p>
<p>Möchten sie den Debugvorgang fortsetzen?</p>
<p>Wenn ich da dann auf ja klicke beendet er mir das Programm und wenn ich auf nein klicke auch ... von daher keinen plan wie ich das beheben soll ...</p>
<p>3.) kannste mir das kurz zeigen ?</p>
<p>Anderes: habe festgestellt: wenn ich alle SetAnzeigeText auskomentiere bis auf<br />
SetAnzeigeText(tmp2,0);<br />
und dann<br />
char erg_1=ConvertStringHexToChar(tmp2);<br />
mache dann geht es ... wenn ich SetAnzeigeText(tmp2,0); weg lasse stürzt er ab<br />
liegt das vielleicht an der funktion?</p>
<pre><code>char ConvertStringHexToChar(LPCTSTR Data)
{
      char Number;
      _stscanf(Data,&quot;%x&quot;,&amp;Number);
      return Number;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1987417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987417</guid><dc:creator><![CDATA[LordTerra]]></dc:creator><pubDate>Mon, 29 Nov 2010 11:30:56 GMT</pubDate></item><item><title><![CDATA[Reply to Programm stürt beim Schliessen einer Else Abfrage ab on Mon, 29 Nov 2010 11:39:41 GMT]]></title><description><![CDATA[<blockquote>
<p>Für &quot;AVS2FW.exe&quot; können keine Debuginformationen gefunden werden oder sie stimmen nicht überein. Die Binärdaten wurden nicht mit Debuginformationen erstellt.</p>
</blockquote>
<p>Dann compilier das Programm doch mit Debuginformationen.<br />
Schalt mal von Release auf Debug.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987424</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Mon, 29 Nov 2010 11:39:41 GMT</pubDate></item><item><title><![CDATA[Reply to Programm stürt beim Schliessen einer Else Abfrage ab on Mon, 29 Nov 2010 11:48:00 GMT]]></title><description><![CDATA[<p>DirkB schrieb:</p>
<blockquote>
<blockquote>
<p>Für &quot;AVS2FW.exe&quot; können keine Debuginformationen gefunden werden oder sie stimmen nicht überein. Die Binärdaten wurden nicht mit Debuginformationen erstellt.</p>
</blockquote>
<p>Dann compilier das Programm doch mit Debuginformationen.<br />
Schalt mal von Release auf Debug.</p>
</blockquote>
<p>doofe frage: aber wie mach ich das in visual studio c++ 8.0<br />
also ich kann hier nur zwischen den konfigurationen hin udn her schalten und da gibts nur fwrelease und demo, was in dem fall nur zur folge hat das in demo die kamera geschichten aussen vor gelassen werden</p>
<p>aber wo stell ich auf debug?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1987431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987431</guid><dc:creator><![CDATA[LordTerra]]></dc:creator><pubDate>Mon, 29 Nov 2010 11:48:00 GMT</pubDate></item><item><title><![CDATA[Reply to Programm stürt beim Schliessen einer Else Abfrage ab on Mon, 29 Nov 2010 12:34:46 GMT]]></title><description><![CDATA[<blockquote>
<p>3.) kannste mir das kurz zeigen ?</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;vector&gt;

std::vector&lt;char&gt; buffer(1024);    // 1024 Elemente
buffer.resize(1200);               // Größe ändern auf 1200, Inhalt bleibt gültig
for (int i = 0; i &lt; buffer.size(); i++)  // jedes Element ansprechen
{
    buffer.at(i);    // oder Alternativ =&gt; buffer[i];
}
</code></pre>
<p>Der Vorteil von at() ist, dass das Programm es merkt, wenn du einen ungültigen Index hast.</p>
<p>Die Adresse des Elementes kannst du dir mit dem Adressoperator holen:</p>
<pre><code class="language-cpp">&amp;buffer[0]   // also so wie beim Feld auch
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1987451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987451</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Mon, 29 Nov 2010 12:34:46 GMT</pubDate></item><item><title><![CDATA[Reply to Programm stürt beim Schliessen einer Else Abfrage ab on Mon, 29 Nov 2010 12:37:42 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-109509" rel="nofollow">SeppJ</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/f10" rel="nofollow">C (C89 und C99)</a> in das Forum <a href="http://www.c-plusplus.net/forum/f15" rel="nofollow">C++ (auch C++0x)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/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/1987452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1987452</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 29 Nov 2010 12:37:42 GMT</pubDate></item></channel></rss>