<?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[fehler beim auswerten eines Zeichens aus einem String in einem CASE]]></title><description><![CDATA[<p>Hallo,<br />
ich habe wie gesagt ein Problem beim auswerten eines char Zeichens in einem case konstrukt.<br />
Dabei wird übers Netzwerk (TCP/IP) ein Packet gesendet und dann eine Antwort empangen die dann auszuwerten ist.<br />
Zum Problem:<br />
In Zeile 21 bei dem &quot;case 0x84&quot; kommt jetzt der fehler:<br />
Warnung: Case-Marke überschreitet Maximalwert des Typs [Standartmäßig aktiviert]</p>
<pre><code>*
*
*
/*******************SENDEN****************************/
			cSock &lt;&lt; obuf;	// anfrage Senden

/*******************EMPFANGEN*************************/
			recvLenght = cSock &gt;&gt; ibuf;
*
*// hier werden noch diverse fehler abgefangen
*
// ab hier wird die antwort ausgewertet
switch(ibuf[7]) // buffer[7] enthÃ¤lt den Funktion code der Antwort oder einen error code
	{
	case 0x04: //es wurde mit dem Richtigen Fkt Code geantwortet
*
*//weiteresauswerten der antwort
*//Kein fehler aufgetreten
*
		break;
		case 0x84:      //Fehler code vom modbus/tcp Protokoll
		switch(ibuf[8]) // im nächsten byte steht der fehler
		{
*
*
*
</code></pre>
<p>Ich benutze eclipse 3.7.2.<br />
Bei ibuf (das wird in dem case ausgewertet) handelt es sich um einen String.<br />
Die netzwerk fkt's habe ich größten teils aus dem Buch C++ von a bis z übernommen. ^^ Es handelt sich daher um Vererbte Klassen mit überladenen operatoren etc.<br />
Bei diesem ganzen Modul handelt es sich um eine Umsetzung von einem c programm in c++ code.(daher warscheinlich auch der Fehler)<br />
zum Modbus TCP protokoll:<br />
Im 8ten Bit [index 7] der Antwort wird entweder der fkt Kode zurückgesendet oder eben ein Fehler, siehe zeile 21, der dann weiter ausgewertet werden muss.</p>
<p>Ich hoffe das ihr mir helfen könnt ich weiß nicht mehr weiter.<br />
MFG BabCom</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/316420/fehler-beim-auswerten-eines-zeichens-aus-einem-string-in-einem-case</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 22:29:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316420.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 May 2013 12:42:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 12:42:08 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe wie gesagt ein Problem beim auswerten eines char Zeichens in einem case konstrukt.<br />
Dabei wird übers Netzwerk (TCP/IP) ein Packet gesendet und dann eine Antwort empangen die dann auszuwerten ist.<br />
Zum Problem:<br />
In Zeile 21 bei dem &quot;case 0x84&quot; kommt jetzt der fehler:<br />
Warnung: Case-Marke überschreitet Maximalwert des Typs [Standartmäßig aktiviert]</p>
<pre><code>*
*
*
/*******************SENDEN****************************/
			cSock &lt;&lt; obuf;	// anfrage Senden

/*******************EMPFANGEN*************************/
			recvLenght = cSock &gt;&gt; ibuf;
*
*// hier werden noch diverse fehler abgefangen
*
// ab hier wird die antwort ausgewertet
switch(ibuf[7]) // buffer[7] enthÃ¤lt den Funktion code der Antwort oder einen error code
	{
	case 0x04: //es wurde mit dem Richtigen Fkt Code geantwortet
*
*//weiteresauswerten der antwort
*//Kein fehler aufgetreten
*
		break;
		case 0x84:      //Fehler code vom modbus/tcp Protokoll
		switch(ibuf[8]) // im nächsten byte steht der fehler
		{
*
*
*
</code></pre>
<p>Ich benutze eclipse 3.7.2.<br />
Bei ibuf (das wird in dem case ausgewertet) handelt es sich um einen String.<br />
Die netzwerk fkt's habe ich größten teils aus dem Buch C++ von a bis z übernommen. ^^ Es handelt sich daher um Vererbte Klassen mit überladenen operatoren etc.<br />
Bei diesem ganzen Modul handelt es sich um eine Umsetzung von einem c programm in c++ code.(daher warscheinlich auch der Fehler)<br />
zum Modbus TCP protokoll:<br />
Im 8ten Bit [index 7] der Antwort wird entweder der fkt Kode zurückgesendet oder eben ein Fehler, siehe zeile 21, der dann weiter ausgewertet werden muss.</p>
<p>Ich hoffe das ihr mir helfen könnt ich weiß nicht mehr weiter.<br />
MFG BabCom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320626</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 03 May 2013 12:42:08 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 12:48:26 GMT]]></title><description><![CDATA[<p>BabCom schrieb:</p>
<blockquote>
<p>Zum Problem:<br />
In Zeile 21 bei dem &quot;case 0x84&quot; kommt jetzt der fehler:<br />
Warnung: Case-Marke überschreitet Maximalwert des Typs [Standartmäßig aktiviert]</p>
</blockquote>
<p>Der Compiler hat immer Recht.</p>
<blockquote>
<p>Ich benutze eclipse 3.7.2.<br />
Bei ibuf (das wird in dem case ausgewertet) handelt es sich um einen String.</p>
</blockquote>
<p>Und somit ist ibuf[7] ein char (der in der Regel nur bis 0x7F geht)</p>
<blockquote>
<p>Die netzwerk fkt's habe ich größten teils aus dem Buch C++ von a bis z übernommen.</p>
</blockquote>
<p>Das erklärt alles:<br />
<a href="http://www.c-plusplus.net/forum/272350" rel="nofollow">http://www.c-plusplus.net/forum/272350</a><br />
Benutze das Buch als Grillanzünder und vergiss alles, was du daraus &quot;gelernt&quot; hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320629</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 03 May 2013 12:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 13:15:43 GMT]]></title><description><![CDATA[<p>OK, kann sein das J. Wolf einige schlechte Beispeile in seinem Buch(büchern) hatt, aber es liegt nicht an dem Nentzwerk teil meines Programmes.<br />
(höchstens an der auswertung der rückgaben (string zu char))</p>
<p>Dazu das der char wert überschritten wird, kann ich nur sagen das es sich vorher wiegesagt um eine reins c programm gehandelt hatt und ich die auswertung d.h. das gesammte case konstrukt daraus übernommen habe, und es da so funktioniert hatt.<br />
(dabei handelt es sich um eine 1 zu 1 Kopie, wie sie vom modbus Standart vorgegeben wird)</p>
<p>MFG BabCom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320645</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 03 May 2013 13:15:43 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 13:30:39 GMT]]></title><description><![CDATA[<p>Und was möchtest du uns damit sagen? Dass du lieber Herrn Wolf und deinem alten Programm vertraust, anstatt der klaren Meldung des Compilers und meiner Erklärung, was diese bedeutet? Das darfst du gerne, aber beschwer dich hinterher nicht, dass man dich nicht gewarnt hätte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320660</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 03 May 2013 13:30:39 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 13:32:45 GMT]]></title><description><![CDATA[<p>Erwartest du jetzt, dass es Puff macht und dein Programm funktioniert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320661</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 03 May 2013 13:32:45 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 13:37:38 GMT]]></title><description><![CDATA[<p>Einfach mal geraten: Dein buffer ist vom Typ <code>char</code> , sollte aber vom typ <code>unsigned char</code> sein.</p>
<p>Nicht aufregen über die destruktiven Antworten, hier sind sogar die Mods Trolle <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/2320662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320662</guid><dc:creator><![CDATA[Captain Obvious]]></dc:creator><pubDate>Fri, 03 May 2013 13:37:38 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 13:54:10 GMT]]></title><description><![CDATA[<p>Danke für die antwort Captain Obvious das werd ich gleich mal ausprobieren.<br />
Das könnte sehr gut zutreffen ich werd's wiegesagt gleich mal prüfen hab das alte Programm ja noch.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a><br />
Nein wenn mein Compiler mir was sagt dann glaub ich das, sonst hätte ich hier nicht nach gefragt.<br />
Und das was du mir im vorherigem Post geschrieben hast glaube ich auch nur hat's mich nicht wirklich weiter grebracht. denn das da nen fehler ist hat mir mein Compiler vertaten.<br />
Ich habe mir blos erhofft das jemand weiß wiso der Compiler diesen Fehler meldet. und was ICH Falsch gemacht habe(n könnte).</p>
<p>@manni66<br />
No komment</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320667</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 03 May 2013 13:54:10 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 14:05:57 GMT]]></title><description><![CDATA[<p>Ich habe das mit dem unsigned char geprüft und im alten c Programm ist ibuf tatsächlich unsigned.</p>
<p>währe die lösung dann einfach</p>
<pre><code>switch((unsigned char)ibuf[7]) // buffer[7] enthÃ¤lt den Funktion code der Antwort oder einen error code
    {
    case 0x04: //es wurde mit dem Richtigen Fkt Code geantwortet
</code></pre>
<p>anstatt von:</p>
<pre><code>switch(ibuf[7]) // buffer[7] enthÃ¤lt den Funktion code der Antwort oder einen error code
    {
    case 0x04: //es wurde mit dem Richtigen Fkt Code geantwortet
</code></pre>
<p>??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320669</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 03 May 2013 14:05:57 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 14:20:38 GMT]]></title><description><![CDATA[<p>Wenn, dann bitte <code>static_cast&lt;unsigned char&gt;(ibuf[7])</code> . Kann richtig sein. Ist es wahrscheinlich auch. Kommt eben auf den Kontext an. Ist aber auf jeden Fall verdächtig, wenn man solche Umwandlungen braucht, denn das heißt, vorher lief irgendwo was falsch. Wieso ist der Typ denn nicht von vornherein unsigned char?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320673</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 03 May 2013 14:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 14:33:45 GMT]]></title><description><![CDATA[<p>Jammere nicht soviel rum, dass die gegebenen Antworten nicht komplett deinen Erwartungen entsprechen.<br />
Wenn ich Erstantworter gewesen wäre, wäre deine Mimmosenhaftigkeit noch stärker strapaziert worden.<br />
Es liegt auch nicht am &quot;c programm&quot; oder &quot;c++ programm&quot;, sondern am Compiler, und am C Standard, der 3 unterschiedliche Typen char,signed char und unsigned char vorschreibt, und dafür jeweils die Wertebereiche</p>
<pre><code>unsigned char:         0...UCHAR_MAX
signed char:   SCHAR_MIN...SCHAR_MAX
char:           CHAR_MIN...CHAR_MAX
</code></pre>
<p>und genau das prüft dein Compiler und <strong>kann</strong> (muss nicht!) hier eine Warnung ausgeben.<br />
char ist <strong>implementierungsabhängig</strong>, d.h. der Compilerbauer legt das fest, ob äquivalent zu signed char oder unsigned char.<br />
Deinen Cast kannst du so machen, Casts überdecken aber immer etwas und verlangen den totalen Überblick des Programmierers über seinen Code; der Compiler hier will dir also sagen, dass dein Ursprungsprogramm nicht portabel ausgelegt ist, eben weil du den Code anpassen musst um ihn woanders zum Laufen zu bringen; und auch hier wieder zeigt sich, dass C und C++ eben keine gleichen Programmmiersprachen sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320677</guid><dc:creator><![CDATA[Wutz]]></dc:creator><pubDate>Fri, 03 May 2013 14:33:45 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 14:44:59 GMT]]></title><description><![CDATA[<p>Also das leigt daran das ich mir eine Netzwerk Schnittschtelle gebaut habe in der das komplete Netzwerk management(dh Einstellungen wie AF_INET etc.) in eine Extra Klasse ausgelagert ist. Dies klasse habe ich intern mit c++ strings für die buffer aufgebaut.<br />
Das hält meinen Code deutlich übersichtlicher als wenn ich zwischen der reinen Datenverarbeitung auch noch die ganzen socket sachen zwischen hätte. Daher kommt dann auch mein Problem. Die Daten werden als Strings(char arrays) gebuffert ich brauche aber unsinged.</p>
<p>Dan bendake ich mich hier für die schnelle hilfe.<br />
MFG BabCom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320682</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 03 May 2013 14:44:59 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 15:03:34 GMT]]></title><description><![CDATA[<p>Kapseln kannst du auch in C. Sogar effizienter und benutzerfreundlicher als in C++.<br />
Kapselung ist nur <strong>eine</strong> Eigenschaft von C++-Klassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320688</guid><dc:creator><![CDATA[Wutz]]></dc:creator><pubDate>Fri, 03 May 2013 15:03:34 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Fri, 03 May 2013 15:05:37 GMT]]></title><description><![CDATA[<p>strings für Netzwerkaktivität klingt komisch. Brauchst du wirklich Zeichenkettenverarbeitung oder bloß einen variablen Haufen (signed/unsigned) chars? Letzteres wäre nämlich <code>vector&lt;gewünschter chartyp&gt;</code> . Falls der Haufen nicht einmal variabel groß sein braucht, sogar nur <code>array&lt;chartyp&gt;</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2320689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320689</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 03 May 2013 15:05:37 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 13:16:36 GMT]]></title><description><![CDATA[<p>nun ja das hat seinen begründung darin, das ich diese Klasse wiederverwendbahr haben wollte, dh sie nicht nur speziell für diese Netzwerkanwendung sondern im zweifel auch für spätere Anwendungen benutzen will.</p>
<p>Ich werde das ganze nächste woche durch teste nund dann evtl mit weitere Fragen aufwarten.^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323755</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Thu, 16 May 2013 13:16:36 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 13:22:56 GMT]]></title><description><![CDATA[<p>Wutz schrieb:</p>
<blockquote>
<p>Sogar effizienter und benutzerfreundlicher als in C++.</p>
</blockquote>
<p>Also ich weiss ja nicht wie's dir geht, aber Konstruktoren und Destruktoren manuell aufzurufen ist nicht mein Ding.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323757</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Thu, 16 May 2013 13:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 13:45:30 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Wutz schrieb:</p>
<blockquote>
<p>Sogar effizienter und benutzerfreundlicher als in C++.</p>
</blockquote>
<p>Also ich weiss ja nicht wie's dir geht, aber Konstruktoren und Destruktoren manuell aufzurufen ist nicht mein Ding.</p>
</blockquote>
<p>Was haben Konstruktoren mit Kapselung zu tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323759</guid><dc:creator><![CDATA[käpsele]]></dc:creator><pubDate>Thu, 16 May 2013 13:45:30 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 13:47:36 GMT]]></title><description><![CDATA[<p>Wutz schrieb:</p>
<blockquote>
<p>Sogar...benutzerfreundlicher als in C++.</p>
</blockquote>
<p>Dem Benutzer dürfte es doch ziemlich schnuppe sein, ob der Code in C oder in C++ geschrieben wurde und das Programm sollte sich in beiden Fällen nach außen gleich verhalten. Wenn ein Benutzer z.B. etwas in der Konsole eingeben soll, kriegt er also nicht mit, ob nun ein fgets oder ein cin dahinter steckt.<br />
Begründe mal deine Aussage, wenn sie nicht als Nonsens angesehen werden soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323760</guid><dc:creator><![CDATA[häh?!]]></dc:creator><pubDate>Thu, 16 May 2013 13:47:36 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 13:56:50 GMT]]></title><description><![CDATA[<p>häh?! schrieb:</p>
<blockquote>
<p>Wenn ein Benutzer z.B. etwas in der Konsole eingeben soll, [...]</p>
</blockquote>
<p>Wie wäre es mit Benutzer = Benutzer von C bzw. C++ = Programmierer?<br />
Etwas Textverständnis sollte schon vorausgesetzt werden können, zumal es hier alle Poster vor dir verstanden haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323763</guid><dc:creator><![CDATA[lol?!]]></dc:creator><pubDate>Thu, 16 May 2013 13:56:50 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 13:59:20 GMT]]></title><description><![CDATA[<p>käpsele schrieb:</p>
<blockquote>
<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Wutz schrieb:</p>
<blockquote>
<p>Sogar effizienter und benutzerfreundlicher als in C++.</p>
</blockquote>
<p>Also ich weiss ja nicht wie's dir geht, aber Konstruktoren und Destruktoren manuell aufzurufen ist nicht mein Ding.</p>
</blockquote>
<p>Was haben Konstruktoren mit Kapselung zu tun?</p>
</blockquote>
<p>Nichts. Hab ich auch nicht behauptet.<br />
Ich habe damit gemeint, dass ich C besonders deshalb nicht leiden kann, weil es kein RAII kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323765</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Thu, 16 May 2013 13:59:20 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 14:06:26 GMT]]></title><description><![CDATA[<p>lol?! schrieb:</p>
<blockquote>
<p>häh?! schrieb:</p>
<blockquote>
<p>Wenn ein Benutzer z.B. etwas in der Konsole eingeben soll, [...]</p>
</blockquote>
<p>Wie wäre es mit Benutzer = Benutzer von C bzw. C++ = Programmierer?<br />
Etwas Textverständnis sollte schon vorausgesetzt werden können, zumal es hier alle Poster vor dir verstanden haben.</p>
</blockquote>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox92572" /><label for="checkbox92572">du hast Ahnung</label></div><br />
<div class="plugin-markdown"><input type="checkbox" id="checkbox92571" /><label for="checkbox92571">du kennst dich mit geläufigen begriffen der it-branche aus</label></div></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323766</guid><dc:creator><![CDATA[it n00b]]></dc:creator><pubDate>Thu, 16 May 2013 14:06:26 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 14:24:13 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Ich habe damit gemeint, dass ich C besonders deshalb nicht leiden kann, weil es kein RAII kann.</p>
</blockquote>
<p>C braucht das auch nicht, weil es keine Exceptions kennt.</p>
<p>Das Problem an RAII ist, dass es nicht ausschaltbar ist. Es macht genau 0 Sinn, den Destruktor von einem moved-from unique_ptr aufzurufen oder von einem sicher leeren Vektor. Und vor C++ war RAII noch schrecklicher, oder wie möchtest du ein Objekt, das klar nicht kopierbar ist aus einer Funktion rausbefördern? Das ging nur mit einer zusätzlichen Indirektion à la Pointer aka Anti-RAII oder auto_ptr aka DesignFailure oder shared_ptr aka Selbst-Java-Ist-Schneller.</p>
<p>RAII ist sehr oft sehr praktisch, aber manchmal ginge es benutzerfreundlicher und effizienter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323772</guid><dc:creator><![CDATA[käpsele]]></dc:creator><pubDate>Thu, 16 May 2013 14:24:13 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 14:29:53 GMT]]></title><description><![CDATA[<p>käpsele schrieb:</p>
<blockquote>
<p>RAII ist sehr oft sehr praktisch, aber manchmal ginge es benutzerfreundlicher und effizienter.</p>
</blockquote>
<p>Wie? Wo? Wann? Beispiel? Ich hatte mit RAII noch nie iregendwelche Probleme, du schon?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323775</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 16 May 2013 14:29:53 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 14:30:18 GMT]]></title><description><![CDATA[<p>käpsele schrieb:</p>
<blockquote>
<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Ich habe damit gemeint, dass ich C besonders deshalb nicht leiden kann, weil es kein RAII kann.</p>
</blockquote>
<p>C braucht das auch nicht, weil es keine Exceptions kennt.</p>
</blockquote>
<pre><code>HANDLE_TO_STH handle = create_handle(some_params);
if (!handle)
    return ERR_NOT_CREATED;

if (!do_something_with(handle));
    return SOME_OTHER_ERR;

destroy_handle(handle);
return ALL_RIGHT;
</code></pre>
<p>Ups.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323776</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 16 May 2013 14:30:18 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 14:43:26 GMT]]></title><description><![CDATA[<p>Schlechten Code kann man in allen Programmiersprachen schreiben oder willst du dass ich ein Beispiel mit new/delete bringe?</p>
<pre><code class="language-cpp">int do_this_with_handle(HANDLE* handle)
{
  if (!do_something_with(handle));
    return SOME_OTHER_ERR;

  return ALL_RIGHT;
}

HANDLE_TO_STH handle = create_handle(some_params);
if (!handle) {
  perror(&quot;bad luck&quot;);
} else {
  if (do_this_with_handle(handle) == ALL_RIGHT)
    puts(&quot;all right&quot;)
  destroy_handle(handle);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2323780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323780</guid><dc:creator><![CDATA[käpsele]]></dc:creator><pubDate>Thu, 16 May 2013 14:43:26 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 15:16:48 GMT]]></title><description><![CDATA[<p>käpsele schrieb:</p>
<blockquote>
<p>Schlechten Code kann man in allen Programmiersprachen schreiben oder willst du dass ich ein Beispiel mit new/delete bringe?</p>
</blockquote>
<p>Klar, kann man schlechten Code schreiben.<br />
Aber nehmen wir mal an, man nutzt das handle mit einer Funktion, die, wenn sie schief geht auch keine Zerstörung erfordert (nur ein Beispiel). Dann kommt irgendwann ein anderer Programmierer daher, muss unter Zeitdruck ein weiteres Feature einbauen und fügt nur mal eben die do_something_with() mit Fehlerbehandlung ein (so wie ich das hatte, nicht so wie du das hattest).<br />
So, und nun?<br />
Was ich sagen will: mit RAII kann so etwas überhaupt nicht passieren. Jeder macht mal Fehler, wir sind auch nur Menschen.<br />
Und delete nutzt man in gutem C++ (mit RAII) sowieso nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323782</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 16 May 2013 15:16:48 GMT</pubDate></item><item><title><![CDATA[Reply to fehler beim auswerten eines Zeichens aus einem String in einem CASE on Thu, 16 May 2013 15:56:20 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Ich sage ja nicht, dass RAII schlecht ist. RAII und C++, das passt gut zusammen, RAII und Non-Memory-Ressourcen, das ist eine super Lösung. Allerdings: File-Handling ist nur ein geringer Teil im Code. Den Code, der die Aktion ausführt in eine Funktion auszulagern und den Funktionsaufruf zwischen ein open/close einschieben ist ohne Exceptions ein gangbarer Workaround (dann kann man auch mal eben so was im Code hinzufügen).</p>
<p>Ich sage nur, dass RAII auch Probleme hat. Schreib in pre-C++11 mal eine Funktion, die einen ofstream zurückgibt =&gt; nur mit Hacks möglich. Und wenn du das in C++11 mit move() geschafft hast, versuch dann mal, den unsinnigen Destruktoraufruf zu verhindern =&gt; nur mit Hacks möglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323787</guid><dc:creator><![CDATA[käpsele]]></dc:creator><pubDate>Thu, 16 May 2013 15:56:20 GMT</pubDate></item></channel></rss>