<?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[AccessViolation - aber nichts verändert]]></title><description><![CDATA[<p>Guten abend, bei mir hängt mal wieder.</p>
<p>Ich habe eine Klasse die einen längeren String auswertet. Dieser wird als allererstes an verschiedenen Stellen aufgetrennt und in einen Stringarray namens entry geschickt.</p>
<p>Nachdem der komplete String geteilt wurde sind so etwa 2-9 Arrayeinträge entstanden.</p>
<p>Diese werden jetzt nacheinander an eine Methode übergeben, die den Inhalt weiter zerstückelt, indem Substrings gebildet werden.</p>
<p>Diese Methode wird vom Programm an zwei verschiedenen Stellen aufgerufen, jedes mal sind die Daten exakt gleich. beim zweiten Mal jedoch tritt der Fehler &quot;Im Projek xx.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: Zugriffsverletzung bei Adresse 40004b60. Schreiben von Adresse...&quot;</p>
<p>Die Zeile bei der der Fehler auftritt:</p>
<pre><code>autor[ar_pos] = entr.SubString(posbegin+6, posende-posbegin-6);
</code></pre>
<p>posende und posbegin stimmen, genauso wie ar_pos.</p>
<p>Ich hoffe dass es mal wieder jemand gibt, der mir helfen kann.</p>
<p>mfg<br />
Raimond</p>
<p>*edit* Wenn ich den Array der .h datei durch einen lokalen String autor eretze, dann gehts...<em>/edit</em></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145937/accessviolation-aber-nichts-verändert</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 06:14:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145937.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 02 May 2006 15:54:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to AccessViolation - aber nichts verändert on Tue, 02 May 2006 15:56:49 GMT]]></title><description><![CDATA[<p>Guten abend, bei mir hängt mal wieder.</p>
<p>Ich habe eine Klasse die einen längeren String auswertet. Dieser wird als allererstes an verschiedenen Stellen aufgetrennt und in einen Stringarray namens entry geschickt.</p>
<p>Nachdem der komplete String geteilt wurde sind so etwa 2-9 Arrayeinträge entstanden.</p>
<p>Diese werden jetzt nacheinander an eine Methode übergeben, die den Inhalt weiter zerstückelt, indem Substrings gebildet werden.</p>
<p>Diese Methode wird vom Programm an zwei verschiedenen Stellen aufgerufen, jedes mal sind die Daten exakt gleich. beim zweiten Mal jedoch tritt der Fehler &quot;Im Projek xx.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: Zugriffsverletzung bei Adresse 40004b60. Schreiben von Adresse...&quot;</p>
<p>Die Zeile bei der der Fehler auftritt:</p>
<pre><code>autor[ar_pos] = entr.SubString(posbegin+6, posende-posbegin-6);
</code></pre>
<p>posende und posbegin stimmen, genauso wie ar_pos.</p>
<p>Ich hoffe dass es mal wieder jemand gibt, der mir helfen kann.</p>
<p>mfg<br />
Raimond</p>
<p>*edit* Wenn ich den Array der .h datei durch einen lokalen String autor eretze, dann gehts...<em>/edit</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049701</guid><dc:creator><![CDATA[raimond]]></dc:creator><pubDate>Tue, 02 May 2006 15:56:49 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation - aber nichts verändert on Tue, 02 May 2006 16:05:51 GMT]]></title><description><![CDATA[<p>Ich würde mal behaupten, dass Du auf ungültige Arrayadressen zugreifst.<br />
Nutze doch mal den Debugger oder poste mehr Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049707</guid><dc:creator><![CDATA[Rostfrei**]]></dc:creator><pubDate>Tue, 02 May 2006 16:05:51 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation - aber nichts verändert on Tue, 02 May 2006 16:07:52 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Debugger benutzen, um alle einzelne nWerte an der kritischen Stelle genau zu prüfen.<br />
Insbesondere das Array und den index ar_pos.</p>
<p>/Edit : langsam...</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049709</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 02 May 2006 16:07:52 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation - aber nichts verändert on Tue, 02 May 2006 16:15:37 GMT]]></title><description><![CDATA[<p>posbegin hat den Wert 19<br />
posende =34<br />
ar_pos=0</p>
<p>unt in entr steht sowas wie &quot;&lt;entry&gt; &lt;author&gt;&lt;name&gt;Gerringer&lt;/name&gt;&lt;ur&quot;</p>
<p>auf den Namen zwischen den &lt;name&gt; und &lt;/name&gt; habe ich es abgesehen.</p>
<pre><code>//Autorname
       posbegin = entr.AnsiPos(&quot;&lt;name&gt;&quot;);
       posende = entr.AnsiPos(&quot;&lt;/name&gt;&quot;);
       autor[ar_pos] = entr.SubString(posbegin+6, posende-posbegin-6);
</code></pre>
<p>Das merkwürde ist ja, dass es beim ersten aufrufder Klasse und deren Methoden problemlos funktioniert, nur beim 2. nicht.</p>
<p>Wenn ich den autor[ar_pos] jetzt mal durch &quot;String test&quot; ersetze, dann funktioniert es wieder</p>
<p>in der header:</p>
<pre><code>String autor[100],       //Name des Autors
                     //published[100],   //Veröffentlichungsdateum
                     //updated[100],     //Updatedatum
                     titel[100],       //Titel der Geschichte
                     category[100],    //Kategorie 
                     genre[100],       //Genre (Drama, Romance)
............. letzer[100];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1049711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049711</guid><dc:creator><![CDATA[raimond]]></dc:creator><pubDate>Tue, 02 May 2006 16:15:37 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation - aber nichts verändert on Tue, 02 May 2006 16:23:23 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>eiun Überprüfung wert ist noch dir Frage, ob die Instanz der Klasse ansich überhaupt noch gültig ist, für die die Methode mit dem String-Zerlegen ausgeführt wird.<br />
Ansonsten können wir nicht viel dazu sagen, zu wenig ist von dem Speicherverlauf erkennbar. Da must du selber mit dem Debugger alles einzeln kontrollieren.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049714</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 02 May 2006 16:23:23 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation - aber nichts verändert on Tue, 02 May 2006 16:25:30 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>wenn du mir noch sagst wie ich vorschlag 1 und 2 durchführe dann gerne.</p>
<p>mfg<br />
Raimond</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049717</guid><dc:creator><![CDATA[raimond]]></dc:creator><pubDate>Tue, 02 May 2006 16:25:30 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation - aber nichts verändert on Tue, 02 May 2006 16:32:56 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>1. schau dir zur Entwurfzeit an, wo die Methode genau aufgerufen wird, und verfolge die Instanz die dazu benutzt wird. Wo kommt die her? Ist die zum Aufrufzeitpunkt noch gültig?</p>
<p>2. setzt so viele Brekpoints in relevanten Teilen wie möglich, geh mit F7 und F8 den Verlauf des Programmes durch und verfolge das Stack-fenster (<em>Ansicht/Debug-Fenster/Aufruf-Stack</em>). Dort siehst du welche Methoden sich nacheinander bis zu dem aktuellen Haltepunkt aufgerufen haben, und mit welchen Parametern. Achte auch NULL-Werte, wo keine sein dürfen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049722</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 02 May 2006 16:32:56 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation - aber nichts verändert on Tue, 02 May 2006 16:48:18 GMT]]></title><description><![CDATA[<p>Zuersteinmal vielen vielen vielen Dank für die Zeit und Gedult die ihr immer für mich aufbringt.</p>
<p>Offenbar lags daran, dass ich den Klassenaufruf so reingepackt habe:</p>
<pre><code>__fastcall TMainprog::TMainprog(TComponent* Owner)
        : TForm(Owner)
{
TUpdate *test;
test-&gt;UpdateDateien();
delete test;
}
</code></pre>
<p>mfg<br />
Raimond</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049733</guid><dc:creator><![CDATA[raimond]]></dc:creator><pubDate>Tue, 02 May 2006 16:48:18 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation - aber nichts verändert on Tue, 02 May 2006 17:06:29 GMT]]></title><description><![CDATA[<p>Wenn das hier dagestanden hätte</p>
<pre><code class="language-cpp">TUpdate *test = new TUpdate;
</code></pre>
<p>dann hätte es vielleicht funktioniert.<br />
Alternativ auch das.</p>
<pre><code class="language-cpp">__fastcall TMainprog::TMainprog(TComponent* Owner)
        : TForm(Owner)
{
  TUpdate test;
  test.UpdateDateien();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1049753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049753</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 02 May 2006 17:06:29 GMT</pubDate></item></channel></rss>