<?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[? Operator in Borland]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgende Anweisung mit fragezeichenoperator (Zugriff auf ein StringGrid)</p>
<pre><code class="language-cpp">SG-&gt;Objects[0][j] = (9==(int)SG-&gt;Objects[0][j])?(TObject *)9:(TObject *)((int)SG-&gt;Objects[0][j] + 1);
</code></pre>
<p>bei vielen aufrufen dieser Zeile passiert es manchmal das der Wert des Pointers 9 übersteigt.<br />
Kennt jemand eine Erklärung?</p>
<p>bei der if Anweisung ist dieser Fehler noch nicht aufgetreten</p>
<pre><code class="language-cpp">if 9==(int)SG-&gt;Objects[0][j]) SG-&gt;Objects[0][j] = (TObject *)9;
else SG-&gt;Objects[0][j] = (TObject *)((int)SG-&gt;Objects[0][j] + 1);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/187831/operator-in-borland</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 21:38:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187831.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Jul 2007 13:25:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ? Operator in Borland on Tue, 24 Jul 2007 13:30:57 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgende Anweisung mit fragezeichenoperator (Zugriff auf ein StringGrid)</p>
<pre><code class="language-cpp">SG-&gt;Objects[0][j] = (9==(int)SG-&gt;Objects[0][j])?(TObject *)9:(TObject *)((int)SG-&gt;Objects[0][j] + 1);
</code></pre>
<p>bei vielen aufrufen dieser Zeile passiert es manchmal das der Wert des Pointers 9 übersteigt.<br />
Kennt jemand eine Erklärung?</p>
<p>bei der if Anweisung ist dieser Fehler noch nicht aufgetreten</p>
<pre><code class="language-cpp">if 9==(int)SG-&gt;Objects[0][j]) SG-&gt;Objects[0][j] = (TObject *)9;
else SG-&gt;Objects[0][j] = (TObject *)((int)SG-&gt;Objects[0][j] + 1);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1331568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331568</guid><dc:creator><![CDATA[maikhaenig]]></dc:creator><pubDate>Tue, 24 Jul 2007 13:30:57 GMT</pubDate></item><item><title><![CDATA[Reply to ? Operator in Borland on Tue, 24 Jul 2007 17:29:21 GMT]]></title><description><![CDATA[<p>Was willst du mit</p>
<pre><code class="language-cpp">(int)SG-&gt;Objects[0][j])
</code></pre>
<p>bezwecken? Die Anzahl der Reihen? Spalten?</p>
<p>Dann benutz doch lieber RowCount bzw. ColCount.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331726</guid><dc:creator><![CDATA[Dragonfire]]></dc:creator><pubDate>Tue, 24 Jul 2007 17:29:21 GMT</pubDate></item><item><title><![CDATA[Reply to ? Operator in Borland on Tue, 24 Jul 2007 17:48:51 GMT]]></title><description><![CDATA[<p>Er castet hier nur ein TObject* nach int. Das ist schon in Ordnung. Das geht nicht anders, wenn man ein int in Objects unterbringen will. Ich mag allerdings C++Casts lieber (hier reinterpret_cast).<br />
Ich hatte übrigens noch nie irgendwelche Probleme mit dem ?-Operator und glaube auch nicht, das es da welche gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331746</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 24 Jul 2007 17:48:51 GMT</pubDate></item><item><title><![CDATA[Reply to ? Operator in Borland on Tue, 24 Jul 2007 18:06:27 GMT]]></title><description><![CDATA[<p>Also ich bezweifel auch, dass etwas mit dem ? Operator anders ist als mit if. Hab es schonmal untersucht, und im Bytecode hatten damals meine Stellen identisch ausgesehen, d.h. der compiler hat beide gleich übersetzt.</p>
<p>Die Frage ist eher, was ist hinter Objects[0][j]<br />
ist es ein Objekt, oder ein Zeiger auf ein Objekt? Die Definition von sowas wäre nicht schlecht...<br />
Gabs eine Initialisierung am start? Man kann aufgrund des gepasteten Codes ja sonst wenig dazu sagen. Wenn das mit if funktioniert, wieso nimmst du dann nicht die if Anweisung (auch wenn das jetzt natürlich unlogisch ist, wenns mit if geht..)<br />
Ansonsten hatte ich im Borland auch noch nie Probleme mit dem ? Operator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331755</guid><dc:creator><![CDATA[Donneker]]></dc:creator><pubDate>Tue, 24 Jul 2007 18:06:27 GMT</pubDate></item><item><title><![CDATA[Reply to ? Operator in Borland on Tue, 24 Jul 2007 19:05:13 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>ist es ein Objekt, oder ein Zeiger auf ein Objekt?</p>
</blockquote>
<p>Es ist ein Zeiger auf TObject</p>
<blockquote>
<p>Gabs eine Initialisierung am start?</p>
</blockquote>
<p>Höchstwahrscheinlich liegt hinter dem Zeiger nichts gültiges. Aber das ist hier auch so gewollt, denn der Zeiger selber wird als Wert genommen indem ihm einfach der int-Wert als Adresse aufgezwungen wird. Das ist machbar und an dieser Stelle auch üblich, wenn man weiß was man tut.</p>
<p>Auch ich kenne keine Probleme mit dem ? Operator, das Problem liegt wo anders in deinem Quellcode.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331794</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 24 Jul 2007 19:05:13 GMT</pubDate></item><item><title><![CDATA[Reply to ? Operator in Borland on Fri, 25 Oct 2013 08:32:50 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also ich benutze den Speicherplatz des Zeigers auf das Objekt als integer Wert, da ich keine Objekte verwende.</p>
<p>ja ich mache eine Initialisierung</p>
<pre><code class="language-cpp">SG-&gt;Objects[0][j] = (TObject *)1;
</code></pre>
<p>ich habe das Programm jetzt noch mal 4-5 stunden laufen lassen und der Fehler ist wieder aufgetreten, dass er die 9 übersprungen ist, es liegt also nicht an dem ? Operator.</p>
<p>Erst als ich eine Zwischenvariable eingebaut hab scheint es nicht mehr aufzutreten. (Hab es aber erst seit 2 Stunden an)</p>
<pre><code class="language-cpp">iValue = (int)SG-&gt;Objects[0][j];
if (9&lt;=iValue) SG-&gt;Objects[0][j] = (TObject *)9;
else  SG-&gt;Objects[0][j] = (TObject *)(iValue + 1);
</code></pre>
<p>genau das selbe Problem bei einer anderen Stelle und zwar habe ich einen Zähler im StringGrid erhöht falls das Element enthalten war und einen Zähler der immer hochgezählt wird.</p>
<pre><code class="language-cpp">if (bFound) SG-&gt;Cells[2][j] = IntToStr(SG-&gt;Cells[2][j].ToInt()+1);
SG-&gt;Cells[3][j] = IntToStr(SG-&gt;Cells[3][j].ToInt()+1);
</code></pre>
<p>hier hatte ich manchmal in der 2. Spalte einen höheren Wert als der Gesamtzähler war. (so bei Werten zwischen 12000 und 18000 ist das aufgetreten)</p>
<p>nachdem ich das ebenfalls mit einer Variable gemacht hab scheint es zu gehen.</p>
<pre><code class="language-cpp">iValue = SG-&gt;Cells[2][j].ToInt();
SG-&gt;Cells[2][j] = IntToStr(iValue+1);
</code></pre>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331981</guid><dc:creator><![CDATA[maikhaenig]]></dc:creator><pubDate>Fri, 25 Oct 2013 08:32:50 GMT</pubDate></item><item><title><![CDATA[Reply to ? Operator in Borland on Wed, 25 Jul 2007 16:00:05 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also das letzte jetzt funktioniert, liegt aber wohl weniger an der zwischenvariable. Deine abfrage ist jetzt 9&lt;= ... anstatt 9==<br />
d.h. wenn also der Wert größer ist, wird er ihn auf 9 zurücksetzten.<br />
Auf der anderen Seite, wieso machst du da überhaupt was, wenn der Wert 9 ist, kannste ihn unverändert lassen, und nur hochzählen wenn er kleiner 9 ist?<br />
Irgendwie macht das kein Sinn...</p>
<p>Da würde auch reichen.</p>
<pre><code>((int)SG-&gt;Objects[0][j]&lt;9)?SG-&gt;Objects[0][j]=(TObject *)((int)SG-&gt;Objects[0][j] + 1):0;
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a>:<br />
auch ein Zeiger muss initialisiert werden. Könnte ja sein, er ist vorher schon &gt; 9. (er ist undefiniert, und somit nicht unbedingt = 0)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332434</guid><dc:creator><![CDATA[Donneker]]></dc:creator><pubDate>Wed, 25 Jul 2007 16:00:05 GMT</pubDate></item><item><title><![CDATA[Reply to ? Operator in Borland on Fri, 25 Oct 2013 08:33:25 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>also ich habe die Anweisung so gemacht weil ich mir noch nicht sicher bin ob ich wenn 9 erreicht wird wieder von vorn anfange oder den Wert auf neun lasse.</p>
<p>Ich hab mir jetzt eine Liste gebaut, die die Daten enthält und in der ich die Daten verändere. Diese Liste gleiche ich dann mit meinem StringGrid ab. Das heißt ich muß nicht mehr die Werte aus dem StringGrid auslesen und seitdem geht es auch.<br />
Muß wohl irgendwie an dem StringGrid liegen. Achso das 9 &lt;= hatte ich eingefügt das der Fehler nur einmal auftritt, damit der wieder auf neun zurückgesetzt wird nachdem er diese (wieso weiß ich nicht) übersprungen hat.<br />
Die Zahlen stehen für die Farbe der Zeile, was bedeutet wenn z.B. der Wert 10 drin steht nimmt er die default Farbe.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332711</guid><dc:creator><![CDATA[maikhaenig]]></dc:creator><pubDate>Fri, 25 Oct 2013 08:33:25 GMT</pubDate></item></channel></rss>