<?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[Zugriffsverletzung]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich führe beim Klick auf eine ListBox folgenden Code aus</p>
<pre><code class="language-cpp">void __fastcall TForm1::mediaListClick(TObject *Sender)
{
        char * mediaListVal ;
        //char mediaListVal ;
        String mList = mediaList-&gt;Items-&gt;Text;
        mediaListVal = new char[mList.Length()];
        strcpy(mediaListVal,mList.c_str());

        String id = IntToStr(GetIdFromCompleteName(mediaListVal));

        MyQuery1-&gt;SQL-&gt;Clear();
        MyQuery1-&gt;SQL-&gt;Add(&quot;Select vl.verliehenam as 'verliehen am', vl.zurueckam as 'zurück am' , bn.benutzername as 'verliehen an' from verleih as vl left outer join benutzer as bn on bn.benutzer_id = vl.benutzer_id where vl.medium_id='&quot; + id + &quot;' order by vl.verliehenam&quot;);
        MyQuery1-&gt;Execute();
        grd_history-&gt;DataSource = DataSource1;
        mediaListVal = NULL;
}

int GetIdFromCompleteName(char completeName[])
{
     char * posOfSearchString = strrchr(completeName,' ');
     int id = atoi(posOfSearchString);
     posOfSearchString = NULL;
     return id;
}
</code></pre>
<p>Das funktioniert unmittelbar noch Programmstart auch...<br />
So, nun klicke ich ein zweites Mal auf die ListBox und dann bekomme ich eine &quot;Zugriffsverletztung bei Adresse ....&quot;,&quot;Prozess wird angehalten&quot;...</p>
<p>Ich versteh nicht ganz warum???<br />
Bin über jede Hilfe dankbar. <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/topic/78992/zugriffsverletzung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 29 Jun 2026 21:22:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/78992.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Jul 2004 07:33:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 07:33:44 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich führe beim Klick auf eine ListBox folgenden Code aus</p>
<pre><code class="language-cpp">void __fastcall TForm1::mediaListClick(TObject *Sender)
{
        char * mediaListVal ;
        //char mediaListVal ;
        String mList = mediaList-&gt;Items-&gt;Text;
        mediaListVal = new char[mList.Length()];
        strcpy(mediaListVal,mList.c_str());

        String id = IntToStr(GetIdFromCompleteName(mediaListVal));

        MyQuery1-&gt;SQL-&gt;Clear();
        MyQuery1-&gt;SQL-&gt;Add(&quot;Select vl.verliehenam as 'verliehen am', vl.zurueckam as 'zurück am' , bn.benutzername as 'verliehen an' from verleih as vl left outer join benutzer as bn on bn.benutzer_id = vl.benutzer_id where vl.medium_id='&quot; + id + &quot;' order by vl.verliehenam&quot;);
        MyQuery1-&gt;Execute();
        grd_history-&gt;DataSource = DataSource1;
        mediaListVal = NULL;
}

int GetIdFromCompleteName(char completeName[])
{
     char * posOfSearchString = strrchr(completeName,' ');
     int id = atoi(posOfSearchString);
     posOfSearchString = NULL;
     return id;
}
</code></pre>
<p>Das funktioniert unmittelbar noch Programmstart auch...<br />
So, nun klicke ich ein zweites Mal auf die ListBox und dann bekomme ich eine &quot;Zugriffsverletztung bei Adresse ....&quot;,&quot;Prozess wird angehalten&quot;...</p>
<p>Ich versteh nicht ganz warum???<br />
Bin über jede Hilfe dankbar. <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/554968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/554968</guid><dc:creator><![CDATA[skydiver1983]]></dc:creator><pubDate>Wed, 07 Jul 2004 07:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 07:49:34 GMT]]></title><description><![CDATA[<p>So auf die Schnelle:</p>
<p>1. Bei chars mußt Du ein Zeichen mehr reservieren, als der String lang ist (für das abschließende \0).</p>
<p>2. Gibst Du nirgendwo den char wieder frei (delete[] mediaListVAL).</p>
<p>3. Einfacher wäre es mit:<br />
char* blablabla = AnsiString::c_str();<br />
Dabei mußt Du dann nicht mal den Speicher für den char* mit new reservieren. Und auch nicht wieder freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/554974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/554974</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 07 Jul 2004 07:49:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 08:17:46 GMT]]></title><description><![CDATA[<p>skydiver1983 schrieb:</p>
<blockquote>
<p>Ich versteh nicht ganz warum???</p>
</blockquote>
<p>Dann solltest du schnellstenst den <a href="http://www.junix.ch/bcb/help/debug.html" rel="nofollow">Debugger</a> anwerfen und erstmal herausfinden, in welcher Zeile der Fehler auftritt.</p>
<p>Davon abgesehen ist die Umwandlung in char* wie auch die ganze GetIdFromCompleteName-Funktion relativ fragwürdig, weil völlig unnötig. Das wollte ich dir eigentlich schon in dem diesbezüglichen Thread sagen. <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>
<pre><code class="language-cpp">String mList = mediaList-&gt;Items-&gt;Text; 
int pos = mList.LastDelimiter(&quot; &quot;);
String id = mList.SubString(pos + 1, mList-&gt;Length() - pos);
</code></pre>
<p>Et voila!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/554991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/554991</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 07 Jul 2004 08:17:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 08:50:26 GMT]]></title><description><![CDATA[<p>Jansen schrieb:</p>
<blockquote>
<pre><code class="language-cpp">String mList = mediaList-&gt;Items-&gt;Text; 
int pos = mList.LastDelimiter(&quot; &quot;);
String id = mList.SubString(pos + 1, mList-&gt;Length() - pos);
</code></pre>
<p>Et voila!</p>
</blockquote>
<p>Naja, leider bekomme ich hier jetzt</p>
<p>[C++ Fehler] Unit1.cpp(52): E2288 Zeiger auf Struktur auf linker Seite von -&gt; oder von -&gt;* erforderlich*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/555016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555016</guid><dc:creator><![CDATA[skydiver1983]]></dc:creator><pubDate>Wed, 07 Jul 2004 08:50:26 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 09:06:38 GMT]]></title><description><![CDATA[<p>Das muss natürlich mList.Length() heissen.<br />
Ein bischen Mitdenken ist nicht drin? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/555026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555026</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 07 Jul 2004 09:06:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 09:16:46 GMT]]></title><description><![CDATA[<p>Joe_M. schrieb:</p>
<blockquote>
<p>3. Einfacher wäre es mit:<br />
char* blablabla = AnsiString::c_str();<br />
Dabei mußt Du dann nicht mal den Speicher für den char* mit new reservieren. Und auch nicht wieder freigeben.</p>
</blockquote>
<p>Eher ein Irrglaube... lies doch schnell den Hinweis in der FAQ zu dem Thema...<br />
Der Ansatz war absolut richtig.</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/555034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555034</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Wed, 07 Jul 2004 09:16:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 09:17:38 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>danke, tut mir leid.</p>
<p>Bin eigentlich C#-Coder, so dass ich solche Feinheiten sehr gerne übersehe...</p>
<p><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/555036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555036</guid><dc:creator><![CDATA[skydiver1983]]></dc:creator><pubDate>Wed, 07 Jul 2004 09:17:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 09:49:20 GMT]]></title><description><![CDATA[<p>HAMMER:</p>
<p>Du glaubst gar nicht, was du mir durch diese Funktion abgenommen hast. DANKE!!!!</p>
<p>Mein Code ist dadurch um einiges kürzer geworden. Super...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/555062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555062</guid><dc:creator><![CDATA[skydiver1983]]></dc:creator><pubDate>Wed, 07 Jul 2004 09:49:20 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 10:48:37 GMT]]></title><description><![CDATA[<p>junix schrieb:</p>
<blockquote>
<p>Joe_M. schrieb:</p>
<blockquote>
<p>3. Einfacher wäre es mit:<br />
char* blablabla = AnsiString::c_str();<br />
Dabei mußt Du dann nicht mal den Speicher für den char* mit new reservieren. Und auch nicht wieder freigeben.</p>
</blockquote>
<p>Eher ein Irrglaube... lies doch schnell den Hinweis in der FAQ zu dem Thema...<br />
Der Ansatz war absolut richtig.</p>
</blockquote>
<p>Das sehe ich anders. Laut Hilfe ist der Zeiger bis zum Ende der Anwendung gültig. Natürlich <em>kann</em> der Zeiger ungültig werden, aber in der gegebenen Routine bezweifle ich das.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/555127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555127</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 07 Jul 2004 10:48:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 11:08:57 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char* blablabla = AnsiString::c_str();
</code></pre>
<p>Wenn man sowas im Windows Quellcode finden würde wäre vollkommen klar, warum das Teil sich manchmal von der blauen Seite zeigt :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/555142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555142</guid><dc:creator><![CDATA[Peter]]></dc:creator><pubDate>Wed, 07 Jul 2004 11:08:57 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 11:18:29 GMT]]></title><description><![CDATA[<p>Ihr braucht mir ja nicht zu glauben, probiert es doch einfach aus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/555148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555148</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 07 Jul 2004 11:18:29 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 11:31:36 GMT]]></title><description><![CDATA[<p><em><em>char</em> blablabla = AnsiString::c_str();</em>*</p>
<p>läßt sich nicht compilieren, wenn dann müßte man schon so schreiben:</p>
<p><em><em>char</em> blablabla = AnsiString().c_str();</em>*</p>
<p>Dadurch wird aber kein Speicherplatz allokiert, woher soll er auch wissen wieviel benötigt wird. Kopiert man in so einen String/Pointer was rein geht das oft auch gut da dann warscheinlich nichts kritisches im Speicher überschrieben wird. Macht man aber z.B. sowas:</p>
<p><strong>memset(blablabla, 'x', 1000);</strong></p>
<p>läuft das Programm aller Voraussicht nach nicht mehr ganz so geschmeidig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/555155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555155</guid><dc:creator><![CDATA[Peter]]></dc:creator><pubDate>Wed, 07 Jul 2004 11:31:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 12:21:01 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/366">@Peter</a>:<br />
Entschuldige bitte, aber lies erst die Postings komplett, bevor Du Kommentare dazu schreibst. Ich habe bloß die Klasse und die zu verwendende Funktion angegeben, da ist dann AnsiString::c_str() hoffentlich ausreichend. Ich bin davon ausgegangen, dass auch die Anfänger hier in der Lage sind ein Objekt des Typs AnsiString zu instanzieren.</p>
<p>Für Dich dann im Klartext:</p>
<pre><code class="language-cpp">AnsiSting asTemp;
char* pcTemp;

pcTemp = asTemp.c_str();
</code></pre>
<p>Dieser Zeiger darf natürlich nur und ausschließlich für Leseoperationen verwendet werden. Aber mehr war in dem Thread ja auch nicht verlangt. Er wollte den char* auswerten nicht ihn modifizieren.<br />
Um die Länge eines chars zu ermitteln gibt es dann auch noch strlen(), aber wie gesagt, das ist ein anderes Thema.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/555180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555180</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 07 Jul 2004 12:21:01 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 12:27:49 GMT]]></title><description><![CDATA[<p>@Joe_M<br />
Hab mir übrigens die Postings schon durchgelesen aber erst jetzt verstanden was Du ausdrücken wolltest ***hmpfundsorry***<br />
Hoffe <strong>skydiver1983</strong> ging es nicht so wie mir <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>
]]></description><link>https://www.c-plusplus.net/forum/post/555184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555184</guid><dc:creator><![CDATA[Peter]]></dc:creator><pubDate>Wed, 07 Jul 2004 12:27:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 14:32:07 GMT]]></title><description><![CDATA[<p>keine sorge, ich komme schon lange nimmer mit bei der Diskussion...<br />
ich habe das, was ich wissen wollte...</p>
<p>Gruß<br />
skydiver1983 <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>
]]></description><link>https://www.c-plusplus.net/forum/post/555315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555315</guid><dc:creator><![CDATA[skydiver1983]]></dc:creator><pubDate>Wed, 07 Jul 2004 14:32:07 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriffsverletzung on Wed, 07 Jul 2004 15:04:02 GMT]]></title><description><![CDATA[<p>Was versteht ihr denn nicht?</p>
<p>Hakt doch bitte nach, wenn ihr was nicht versteht. Es nützt euch doch gar nichts, wenn ihr nur abtippselt was andere posten. Schließlich wollt ihr doch was lernen, oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/555348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/555348</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 07 Jul 2004 15:04:02 GMT</pubDate></item></channel></rss>