<?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[CodeGuard]]></title><description><![CDATA[<p>Hi</p>
<p>ich bin gerade meine Anwendung von CodeGuard überprüfen lassen,</p>
<p>und teilweise bringt er einen von mir nicht nachvollziehbaren Fehler:</p>
<p>Definition eines std::vectors:</p>
<pre><code>std::vector&lt;AnsiString&gt; m_WriteBuffer;
</code></pre>
<p>Benutzen des std::vectors:</p>
<pre><code>if(m_WriteBuffer.size()&gt;0 &amp;&amp; m_aktStatus==KOMMUNIKATION_NOTHING)
</code></pre>
<p>Genau an dieser Stelle meckert er folgendes:</p>
<p>Ungültige Zeigerarithmetik.<br />
Bei genauerem hinsehen, zeigt er das das size die Differenz zwischen begin() und end() ausrechnet, und in der Zeile bleibt er stehen.</p>
<p>Passiert jedoch nur manchmal, und nicht reproduzierbar.</p>
<p>Jemand eine Idee was da falsch sein könnte?</p>
<p>Mfg</p>
<p>Reinhold Fischer</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/177722/codeguard</link><generator>RSS for Node</generator><lastBuildDate>Thu, 25 Jun 2026 23:25:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177722.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Apr 2007 12:50:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CodeGuard on Tue, 03 Apr 2007 12:50:40 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>ich bin gerade meine Anwendung von CodeGuard überprüfen lassen,</p>
<p>und teilweise bringt er einen von mir nicht nachvollziehbaren Fehler:</p>
<p>Definition eines std::vectors:</p>
<pre><code>std::vector&lt;AnsiString&gt; m_WriteBuffer;
</code></pre>
<p>Benutzen des std::vectors:</p>
<pre><code>if(m_WriteBuffer.size()&gt;0 &amp;&amp; m_aktStatus==KOMMUNIKATION_NOTHING)
</code></pre>
<p>Genau an dieser Stelle meckert er folgendes:</p>
<p>Ungültige Zeigerarithmetik.<br />
Bei genauerem hinsehen, zeigt er das das size die Differenz zwischen begin() und end() ausrechnet, und in der Zeile bleibt er stehen.</p>
<p>Passiert jedoch nur manchmal, und nicht reproduzierbar.</p>
<p>Jemand eine Idee was da falsch sein könnte?</p>
<p>Mfg</p>
<p>Reinhold Fischer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258588</guid><dc:creator><![CDATA[Reinhold Fischer]]></dc:creator><pubDate>Tue, 03 Apr 2007 12:50:40 GMT</pubDate></item><item><title><![CDATA[Reply to CodeGuard on Tue, 03 Apr 2007 14:56:22 GMT]]></title><description><![CDATA[<p>Dies könnte evtl. ein Fehler bei CodeGuard sein, da end() ja einen Zeiger auf ein Element hinter den gültigen Daten (des Vektors) liefert.<br />
Ansonsten dürfte es keinen Fehler dort geben.</p>
<p>Jedoch habe ich einen Tipp für dich. Du solltest evtl. nicht VCL und STL-Klassen mischen, also besser std::vector<a href="std::string" rel="nofollow">std::string</a> verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258665</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Tue, 03 Apr 2007 14:56:22 GMT</pubDate></item><item><title><![CDATA[Reply to CodeGuard on Tue, 03 Apr 2007 15:26:19 GMT]]></title><description><![CDATA[<p>Th schrieb:</p>
<blockquote>
<p>Dies könnte evtl. ein Fehler bei CodeGuard sein, da end() ja einen Zeiger auf ein Element hinter den gültigen Daten (des Vektors) liefert.</p>
</blockquote>
<p>Vermute ich auch. Bei mir hatte CodeGuard auch mal so einen Fehler gemeldet, weil ich in einer for-Schleife mit einem Zeiger über ein Array iterierte, in der der Zeiger zunächst über die Arraygrenzen hinaus inkrementiert wurde, die Abbruchbedingung aber vor seiner Verwendung stand. Mit solchen Dingen hat CodeGuard seine Schwierigkeiten.</p>
<p>Th schrieb:</p>
<blockquote>
<p>Jedoch habe ich einen Tipp für dich. Du solltest evtl. nicht VCL und STL-Klassen mischen, also besser std::vector<a href="std::string" rel="nofollow">std::string</a> verwenden.</p>
</blockquote>
<p>AnsiString ist keine VCL-Klasse!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258684</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Tue, 03 Apr 2007 15:26:19 GMT</pubDate></item><item><title><![CDATA[Reply to CodeGuard on Tue, 03 Apr 2007 15:54:48 GMT]]></title><description><![CDATA[<p>Ich verstehe hier auch nicht, warum man VCL und STL nicht mischen soll.<br />
Hinweis:<br />
statt</p>
<pre><code class="language-cpp">m_WriteBuffer.size()&gt;0
</code></pre>
<p>kann man auch</p>
<pre><code class="language-cpp">!m_WriteBuffer.empty()
</code></pre>
<p>nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258704</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 03 Apr 2007 15:54:48 GMT</pubDate></item><item><title><![CDATA[Reply to CodeGuard on Tue, 03 Apr 2007 16:11:16 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>audacia schrieb:</p>
<blockquote>
<p>AnsiString ist keine VCL-Klasse!</p>
</blockquote>
<p>Was denn sonst? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258711</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 03 Apr 2007 16:11:16 GMT</pubDate></item><item><title><![CDATA[Reply to CodeGuard on Tue, 03 Apr 2007 16:25:23 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Ich verstehe hier auch nicht, warum man VCL und STL nicht mischen soll.</p>
</blockquote>
<p>Generell hat er schon recht. VCL-Klassen erfüllen diverse Anforderungen, die die STL-Container stellen, nicht, z.B. lassen sie sich nicht einfach so umherkopieren, was std::vector aber, wenn der Speicherbereich neu allokiert werden muß, tut. Auch dürfen sie nur auf dem Heap erstellt werden, was z.B. in boost::array problematisch ist. Zeiger auf VCL-Klassen kann man hingegen bedenkenlos in STL-Containern verwenden.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a>: AnsiString ist keine VCL-Klasse (also eine von TObject abgeleitete Klasse), sondern einfach die C++-Implementation des Delphi-sprachinternen Datentyps AnsiString. Und da es alle für Container notwendigen Voraussetzungen mitbringt, kann man es bedenkenlos in STL-Containern verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258720</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Tue, 03 Apr 2007 16:25:23 GMT</pubDate></item><item><title><![CDATA[Reply to CodeGuard on Tue, 03 Apr 2007 16:38:34 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a>: AnsiString ist keine VCL-Klasse (also eine von TObject abgeleitete Klasse), sondern einfach die C++-Implementation des Delphi-sprachinternen Datentyps AnsiString. Und da es alle für Container notwendigen Voraussetzungen mitbringt, kann man es bedenkenlos in STL-Containern verwenden.</p>
</blockquote>
<p>Achso... wußte nicht das du VCL so eng siehst. Für mich ist alles VCL was Borland in sein Framework zusätzlich zum C++ Standard gepackt hat, unabhängig davon ob es von TObject abgeleitet ist.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258726</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 03 Apr 2007 16:38:34 GMT</pubDate></item><item><title><![CDATA[Reply to CodeGuard on Tue, 03 Apr 2007 18:24:16 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8276">@audacia</a><br />
Alle Objekte, die man in einen STL-Container packen will müssen bestimmte Voraussetungen erfüllen. So gesehen haben die VCL-Klassen da kein Alleinstellungsmerkmal. Da man von TObject abgeleitete Klassen eh nur als pointer rumreicht, ist es sogar besonders einfach sie so zu verwenden. AnsiString selber ist ja auch kein Problem. So gesehen sehe ich hier das problem nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258776</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 03 Apr 2007 18:24:16 GMT</pubDate></item><item><title><![CDATA[Reply to CodeGuard on Tue, 03 Apr 2007 19:22:23 GMT]]></title><description><![CDATA[<p>akari schrieb:</p>
<blockquote>
<p>Achso... wußte nicht das du VCL so eng siehst.</p>
</blockquote>
<p>Eng? Ich sehe das als VCL an, was in Delphi als solche bezeichnet wird. In Delphi kannst du String auch benutzen, ohne die VCL einzubinden, da es nativer Teil der Sprache ist. Die VCL greift nur massiv darauf zurück, weshalb ein Pendant für den C++Builder benötigt wurde.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1387">@Braunstein</a>: bitte mal lesen, was ich geschrieben habe <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>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Alle Objekte, die man in einen STL-Container packen will müssen bestimmte Voraussetungen erfüllen.<br />
...<br />
Da man von TObject abgeleitete Klassen eh nur als pointer rumreicht, ist es sogar besonders einfach sie so zu verwenden.</p>
</blockquote>
<p>audacia schrieb:</p>
<blockquote>
<p>VCL-Klassen erfüllen diverse Anforderungen, die die STL-Container stellen, nicht...<br />
...<br />
Zeiger auf VCL-Klassen kann man hingegen bedenkenlos in STL-Containern verwenden.</p>
</blockquote>
<p>Braunstein schrieb:</p>
<blockquote>
<p>AnsiString selber ist ja auch kein Problem.</p>
</blockquote>
<p>audacia schrieb:</p>
<blockquote>
<p>Und da es [AnsiString] alle für Container notwendigen Voraussetzungen mitbringt, kann man es bedenkenlos in STL-Containern verwenden.</p>
</blockquote>
<p>Braunstein schrieb:</p>
<blockquote>
<p>So gesehen sehe ich hier das problem nicht.</p>
</blockquote>
<p>Ich auch nicht. Wirklich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258803</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Tue, 03 Apr 2007 19:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to CodeGuard on Wed, 04 Apr 2007 08:31:45 GMT]]></title><description><![CDATA[<p>Ok. Ich denke wir sind uns eigentlich einig. <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="🙂"
    /><br />
Ich hatte diesen Satz</p>
<blockquote>
<p>VCL-Klassen erfüllen diverse Anforderungen, die die STL-Container stellen, nicht...</p>
</blockquote>
<p>so interpretiert, dass du bei Anwendung von VCL-Klassen in Containern Probleme siehst. War wohl eine Mißinterpretation.</p>
<p>Schönen Tag noch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259022</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 04 Apr 2007 08:31:45 GMT</pubDate></item><item><title><![CDATA[Reply to CodeGuard on Thu, 05 Apr 2007 10:31:44 GMT]]></title><description><![CDATA[<p>Was so ein kleiner Satz doch alles für eine Diskussion hervorrufen kann...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1259904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1259904</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Thu, 05 Apr 2007 10:31:44 GMT</pubDate></item></channel></rss>