<?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[Access violation at adress...]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich hab ein Programm, das Buttons auf dem Formular erzeugt...<br />
Diese Buttons werden durch eine Ini gesteuert. Ich habe einen<br />
Editor zum editieren der Buttons (in der Ini) erstellt.</p>
<p>Das läuft soweit auch gut, aber sobald ich alles Aktualisiere,<br />
also alle Buttons lösche, sie wieder erstelle und der Ini anpasse,<br />
schmiert mein Programm ab. Der Debugger ist mir wenig hilfreich:<br />
Er sagt nur: Access violation at adress 000000...<br />
Wenn ich das Programm weiterlaufenlasse, sind keine Buttons da!</p>
<p>Wenn ich das Programm mit dem Explorer öffne, schließt es sich einfach!!</p>
<pre><code class="language-cpp">void __fastcall TForm1::FormPaint(TObject *Sender)
//Hab OnPaint gewählt, weil es Probleme mit der Form2 gab.

//---BUTTONERZEUGUNGSROUTINE---

//   Form2: Fenster, auf dem die Buttons erscheinen
//   first_pait: Routine nur beim ersten Zeichnen verwenden.
//   S,D: Stringlisten in denen zusätzliche Infos gespeichert werden.

     Form2-&gt;Color=Color; //Farbe für 2. Formular
     first_paint=0; //Erstes Zeichnen löschen

     ini=new TIniFile(Application-&gt;ExeName+&quot;.ini&quot;); //Ini Deklarieren

     int Position=-35;
     int Seite=0;

     for(int Eintrag_Nummer=0;Eintrag_Nummer&lt;51;Eintrag_Nummer++)
     {

       //Berechnungen der Position
       if(ini-&gt;ReadInteger(&quot;Enabled&quot;,&quot;Enbld&quot;+IntToStr(Eintrag_Nummer),1)==1)if(ini-&gt;ReadString(&quot;Captions&quot;,&quot;Cap&quot;+IntToStr(Eintrag_Nummer),&quot;&quot;)==&quot;-&quot;)Position=Position+20;
       else if(ini-&gt;ReadInteger(&quot;Enabled&quot;,&quot;Enbld&quot;+IntToStr(Eintrag_Nummer),1)==1) if(ini-&gt;ReadString(&quot;Captions&quot;,&quot;Cap&quot;+IntToStr(Eintrag_Nummer),&quot;&quot;)!=&quot;&quot;)
         {

         Position=Position+35;

         if(Position+35 &gt; Screen-&gt;Height){Position=0; Seite++;}

         if(Form2-&gt;btn[Eintrag_Nummer]!=NULL)delete Form2-&gt;btn[Eintrag_Nummer];
         if(Form2-&gt;img[Eintrag_Nummer]!=NULL)delete Form2-&gt;img[Eintrag_Nummer];

         if(Form2-&gt;btn!=NULL)delete Form2-&gt;btn;
         if(Form2-&gt;img!=NULL)delete Form2-&gt;img;

         Form2-&gt;btn[Eintrag_Nummer]=new TDrawdButton(Form2);
         Form2-&gt;img[Eintrag_Nummer]=new TImage(Form2);

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Tag=Eintrag_Nummer;//Merken, welche Button geklickt wurde...
         Form2-&gt;btn[Eintrag_Nummer]-&gt;Farbverlauf=fvHell;
         Form2-&gt;btn[Eintrag_Nummer]-&gt;OnClick=btnC;

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Width=150;
         Form2-&gt;img[Eintrag_Nummer]-&gt;Width=32;

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Height=32;
         Form2-&gt;img[Eintrag_Nummer]-&gt;Height=32;

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Parent=Form2;
         Form2-&gt;img[Eintrag_Nummer]-&gt;Parent=Form2;

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Top=Position;
         Form2-&gt;btn[Eintrag_Nummer]-&gt;Left=33+Seite*200;

         Form2-&gt;img[Eintrag_Nummer]-&gt;Top=Position;
         Form2-&gt;img[Eintrag_Nummer]-&gt;Left=Seite*200;

         //Berechnungen Captions und Images

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Caption=ini-&gt;ReadString(&quot;Captions&quot;,&quot;Cap&quot;+IntToStr(Eintrag_Nummer),&quot;&quot;);
         //Icon
         SHFILEINFO shinfo;
         SHGetFileInfo(StrToChar(ini-&gt;ReadString(&quot;Files&quot;,&quot;File&quot;+IntToStr(Eintrag_Nummer),&quot;&quot;)), NULL, &amp;shinfo, sizeof(shinfo), SHGFI_LARGEICON|SHGFI_ICON);
         //Icon in TImage-Objekt anzeigen
         TIcon *ic=new TIcon();
         ic-&gt;Handle=shinfo.hIcon;
         Form2-&gt;img[Eintrag_Nummer]-&gt;Picture-&gt;Icon=ic;
         delete ic;
         }
       }

       if(Seite&gt;0)Form2-&gt;Height=Screen-&gt;Height;
       else Form2-&gt;Height=Position+50;

       Form2-&gt;Width=Seite*200+200;

       Form2-&gt;Left=0;
       Form2-&gt;Top=0;
       if(dontClose==0)Hide(); //Hauptfenster minimieren...

       ListBox1-&gt;Items-&gt;Clear();
       if(D==NULL)delete D;
       if(S==NULL)delete S;

       D=new TStringList;
       S=new TStringList;

       for(int i=0;i&lt;50;i++)
       {
         if(ini-&gt;ReadString(&quot;Files&quot;,&quot;File&quot;+IntToStr(i),&quot;&quot;)!=&quot;&quot;){ListBox1-&gt;Items-&gt;Add(ini-&gt;ReadString(&quot;Captions&quot;,&quot;Cap&quot;+IntToStr(i),&quot;&quot;));ListBox1-&gt;Checked[i]=ini-&gt;ReadInteger(&quot;Enabled&quot;,&quot;Enbld&quot;+IntToStr(i),1);}
           D-&gt;Add(ini-&gt;ReadString(&quot;Files&quot;,&quot;File&quot;+IntToStr(i),&quot;&quot;));
           S-&gt;Add(ini-&gt;ReadString(&quot;Enabled&quot;,&quot;Enbld&quot;+IntToStr(i),&quot;0&quot;));

      } //Schleifenklammer
</code></pre>
<p>Der Aktualisierungsbuton:</p>
<pre><code class="language-cpp">void __fastcall TForm1::DrawedButton6Click(TObject *Sender)
{
for(int i=0;i&lt;51;i++)
{
delete Form2-&gt;btn[i];
delete Form2-&gt;img[i];
}

delete D;
delete S;

dontClose=1;
first_paint=1;
FormPaint(Sender);
dontClose=0;
}
</code></pre>
<p>Hoffe, ihr könnt mir helfen!</p>
<p>P.S. Bitte meckert nicht wegen der unübersichtlichkeit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>[Edit]Es wär schon nützlich, wenn ich wüsste, was ne Access violation ist <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="🙄"
    /> [/Edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/123092/access-violation-at-adress</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 01:15:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123092.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Oct 2005 20:05:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Access violation at adress... on Wed, 12 Oct 2005 20:10:25 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich hab ein Programm, das Buttons auf dem Formular erzeugt...<br />
Diese Buttons werden durch eine Ini gesteuert. Ich habe einen<br />
Editor zum editieren der Buttons (in der Ini) erstellt.</p>
<p>Das läuft soweit auch gut, aber sobald ich alles Aktualisiere,<br />
also alle Buttons lösche, sie wieder erstelle und der Ini anpasse,<br />
schmiert mein Programm ab. Der Debugger ist mir wenig hilfreich:<br />
Er sagt nur: Access violation at adress 000000...<br />
Wenn ich das Programm weiterlaufenlasse, sind keine Buttons da!</p>
<p>Wenn ich das Programm mit dem Explorer öffne, schließt es sich einfach!!</p>
<pre><code class="language-cpp">void __fastcall TForm1::FormPaint(TObject *Sender)
//Hab OnPaint gewählt, weil es Probleme mit der Form2 gab.

//---BUTTONERZEUGUNGSROUTINE---

//   Form2: Fenster, auf dem die Buttons erscheinen
//   first_pait: Routine nur beim ersten Zeichnen verwenden.
//   S,D: Stringlisten in denen zusätzliche Infos gespeichert werden.

     Form2-&gt;Color=Color; //Farbe für 2. Formular
     first_paint=0; //Erstes Zeichnen löschen

     ini=new TIniFile(Application-&gt;ExeName+&quot;.ini&quot;); //Ini Deklarieren

     int Position=-35;
     int Seite=0;

     for(int Eintrag_Nummer=0;Eintrag_Nummer&lt;51;Eintrag_Nummer++)
     {

       //Berechnungen der Position
       if(ini-&gt;ReadInteger(&quot;Enabled&quot;,&quot;Enbld&quot;+IntToStr(Eintrag_Nummer),1)==1)if(ini-&gt;ReadString(&quot;Captions&quot;,&quot;Cap&quot;+IntToStr(Eintrag_Nummer),&quot;&quot;)==&quot;-&quot;)Position=Position+20;
       else if(ini-&gt;ReadInteger(&quot;Enabled&quot;,&quot;Enbld&quot;+IntToStr(Eintrag_Nummer),1)==1) if(ini-&gt;ReadString(&quot;Captions&quot;,&quot;Cap&quot;+IntToStr(Eintrag_Nummer),&quot;&quot;)!=&quot;&quot;)
         {

         Position=Position+35;

         if(Position+35 &gt; Screen-&gt;Height){Position=0; Seite++;}

         if(Form2-&gt;btn[Eintrag_Nummer]!=NULL)delete Form2-&gt;btn[Eintrag_Nummer];
         if(Form2-&gt;img[Eintrag_Nummer]!=NULL)delete Form2-&gt;img[Eintrag_Nummer];

         if(Form2-&gt;btn!=NULL)delete Form2-&gt;btn;
         if(Form2-&gt;img!=NULL)delete Form2-&gt;img;

         Form2-&gt;btn[Eintrag_Nummer]=new TDrawdButton(Form2);
         Form2-&gt;img[Eintrag_Nummer]=new TImage(Form2);

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Tag=Eintrag_Nummer;//Merken, welche Button geklickt wurde...
         Form2-&gt;btn[Eintrag_Nummer]-&gt;Farbverlauf=fvHell;
         Form2-&gt;btn[Eintrag_Nummer]-&gt;OnClick=btnC;

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Width=150;
         Form2-&gt;img[Eintrag_Nummer]-&gt;Width=32;

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Height=32;
         Form2-&gt;img[Eintrag_Nummer]-&gt;Height=32;

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Parent=Form2;
         Form2-&gt;img[Eintrag_Nummer]-&gt;Parent=Form2;

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Top=Position;
         Form2-&gt;btn[Eintrag_Nummer]-&gt;Left=33+Seite*200;

         Form2-&gt;img[Eintrag_Nummer]-&gt;Top=Position;
         Form2-&gt;img[Eintrag_Nummer]-&gt;Left=Seite*200;

         //Berechnungen Captions und Images

         Form2-&gt;btn[Eintrag_Nummer]-&gt;Caption=ini-&gt;ReadString(&quot;Captions&quot;,&quot;Cap&quot;+IntToStr(Eintrag_Nummer),&quot;&quot;);
         //Icon
         SHFILEINFO shinfo;
         SHGetFileInfo(StrToChar(ini-&gt;ReadString(&quot;Files&quot;,&quot;File&quot;+IntToStr(Eintrag_Nummer),&quot;&quot;)), NULL, &amp;shinfo, sizeof(shinfo), SHGFI_LARGEICON|SHGFI_ICON);
         //Icon in TImage-Objekt anzeigen
         TIcon *ic=new TIcon();
         ic-&gt;Handle=shinfo.hIcon;
         Form2-&gt;img[Eintrag_Nummer]-&gt;Picture-&gt;Icon=ic;
         delete ic;
         }
       }

       if(Seite&gt;0)Form2-&gt;Height=Screen-&gt;Height;
       else Form2-&gt;Height=Position+50;

       Form2-&gt;Width=Seite*200+200;

       Form2-&gt;Left=0;
       Form2-&gt;Top=0;
       if(dontClose==0)Hide(); //Hauptfenster minimieren...

       ListBox1-&gt;Items-&gt;Clear();
       if(D==NULL)delete D;
       if(S==NULL)delete S;

       D=new TStringList;
       S=new TStringList;

       for(int i=0;i&lt;50;i++)
       {
         if(ini-&gt;ReadString(&quot;Files&quot;,&quot;File&quot;+IntToStr(i),&quot;&quot;)!=&quot;&quot;){ListBox1-&gt;Items-&gt;Add(ini-&gt;ReadString(&quot;Captions&quot;,&quot;Cap&quot;+IntToStr(i),&quot;&quot;));ListBox1-&gt;Checked[i]=ini-&gt;ReadInteger(&quot;Enabled&quot;,&quot;Enbld&quot;+IntToStr(i),1);}
           D-&gt;Add(ini-&gt;ReadString(&quot;Files&quot;,&quot;File&quot;+IntToStr(i),&quot;&quot;));
           S-&gt;Add(ini-&gt;ReadString(&quot;Enabled&quot;,&quot;Enbld&quot;+IntToStr(i),&quot;0&quot;));

      } //Schleifenklammer
</code></pre>
<p>Der Aktualisierungsbuton:</p>
<pre><code class="language-cpp">void __fastcall TForm1::DrawedButton6Click(TObject *Sender)
{
for(int i=0;i&lt;51;i++)
{
delete Form2-&gt;btn[i];
delete Form2-&gt;img[i];
}

delete D;
delete S;

dontClose=1;
first_paint=1;
FormPaint(Sender);
dontClose=0;
}
</code></pre>
<p>Hoffe, ihr könnt mir helfen!</p>
<p>P.S. Bitte meckert nicht wegen der unübersichtlichkeit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>[Edit]Es wär schon nützlich, wenn ich wüsste, was ne Access violation ist <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="🙄"
    /> [/Edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890915</guid><dc:creator><![CDATA[PiratMartin]]></dc:creator><pubDate>Wed, 12 Oct 2005 20:10:25 GMT</pubDate></item><item><title><![CDATA[Reply to Access violation at adress... on Wed, 12 Oct 2005 21:07:14 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Access violation at adress 000000</p>
</blockquote>
<p>Das bedeutet das du an einer Stelle über einen Pointer auf eine Instanz zugreifen willst, aber der Pointer auf NULL zeigt. Und das ist eine Speicher-Zugriffsverletzung.</p>
<p>Bentutz den Debugger und geh dein programm mit Breakpoints Schritt für Schritt durch, um die betreffende Stelle zu finden. <a href="http://www.junix.ch/bcb/help/debug.html" rel="nofollow">Hier</a> ist ein Tut für den Debugger.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890934</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 12 Oct 2005 21:07:14 GMT</pubDate></item><item><title><![CDATA[Reply to Access violation at adress... on Wed, 12 Oct 2005 21:57:46 GMT]]></title><description><![CDATA[<p>Hab ich gemacht!</p>
<p>Das Problem ist, dass mein Programm (noch) mit excaptions arbeitet und<br />
ich daher einen Haufen an Warnungen etc. abkriege.</p>
<p>Das Programm ist im Debugger fast nicht Lauffähig <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="🙄"
    /><br />
Aber ich bemüh mich, den Fehler einzukreisen!</p>
<p>Vielen Dank für den Tipp!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890943</guid><dc:creator><![CDATA[PiratMartin]]></dc:creator><pubDate>Wed, 12 Oct 2005 21:57:46 GMT</pubDate></item><item><title><![CDATA[Reply to Access violation at adress... on Thu, 13 Oct 2005 06:15:22 GMT]]></title><description><![CDATA[<p>Hab den Fehler gefunden:</p>
<pre><code class="language-cpp">Form2-&gt;btn[Eintrag_Nummer]=new TDrawdButton(Form2);
Form2-&gt;img[Eintrag_Nummer]=new TImage(Form2);
</code></pre>
<p>Dise Zeilen müssen aus der</p>
<pre><code class="language-cpp">else if(ini-&gt;ReadInteger(&quot;Enabled&quot;,&quot;Enbld&quot;+IntToStr(Eintrag_Nummer),1)==1)...
</code></pre>
<p>Bedingung raus...</p>
<p>Jetzt kommt aber ein anderer lustiger Fehler beim beenden: &quot;Invalid pointer operation&quot;. Der Debugger zeigt auf die Forms.hpp:</p>
<pre><code class="language-cpp">/* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }
</code></pre>
<p>Dabei tue ich garnix beim Beenden, weder beim OnClose, noch beim OnDestroy Event <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>
]]></description><link>https://www.c-plusplus.net/forum/post/891033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/891033</guid><dc:creator><![CDATA[PiratMartin]]></dc:creator><pubDate>Thu, 13 Oct 2005 06:15:22 GMT</pubDate></item><item><title><![CDATA[Reply to Access violation at adress... on Thu, 13 Oct 2005 11:55:28 GMT]]></title><description><![CDATA[<p>*args*</p>
<ul>
<li>OnPaint ist denkbar ungünstig um fortwährend neue buttons und bilder zu erzeugen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></li>
<li>gewöhn dir bitte ganz schnell einen optisch besseren programmierstil an, dann findest du deine fehler auch besser!</li>
<li>massig redundante funktionsaufrufe in dem stückchen code</li>
</ul>
<p>was issn das?</p>
<pre><code class="language-cpp">if(D==NULL)delete D;
if(S==NULL)delete S;
</code></pre>
<p>was stehtn wie gross <strong>btn</strong> und <strong>img</strong> ist?</p>
<p>was is des?</p>
<pre><code class="language-cpp">for(int Eintrag_Nummer=0;Eintrag_Nummer&lt;51;Eintrag_Nummer++)
{
  //Berechnungen der Position // anmerkung: mal alle if's aufgedröselt!
  if (ini-&gt;ReadInteger(&quot;Enabled&quot;,&quot;Enbld&quot;+IntToStr(Eintrag_Nummer),1) == 1)
  {
    if (ini-&gt;ReadString(&quot;Captions&quot;,&quot;Cap&quot;+IntToStr(Eintrag_Nummer),&quot;&quot;) == &quot;-&quot;)
      Position=Position+20;
    else 
    {
      if (ini-&gt;ReadInteger(&quot;Enabled&quot;,&quot;Enbld&quot;+IntToStr(Eintrag_Nummer),1) == 1)
      { 
        if (ini-&gt;ReadString(&quot;Captions&quot;,&quot;Cap&quot;+IntToStr(Eintrag_Nummer),&quot;&quot;) != &quot;&quot;)
        {

          // .. rest vom code

        } 
      }  
    }
  }
}
</code></pre>
<pre><code class="language-cpp">if(Form2-&gt;btn[Eintrag_Nummer]!=NULL)delete Form2-&gt;btn[Eintrag_Nummer];
if(Form2-&gt;img[Eintrag_Nummer]!=NULL)delete Form2-&gt;img[Eintrag_Nummer];

// hier löschst du deine array
if(Form2-&gt;btn!=NULL)delete Form2-&gt;btn;
if(Form2-&gt;img!=NULL)delete Form2-&gt;img;

// und hier greisst du auf die einzelnen elemente zu obwohl du es
// ja gerade gelöscht hast!
Form2-&gt;btn[Eintrag_Nummer]=new TDrawdButton(Form2);
Form2-&gt;img[Eintrag_Nummer]=new TImage(Form2);
</code></pre>
<p>wenn ich das richtig sehe, ändert sich eh nur die position des buttons, wozu erstellst du die dann immer wieder neu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/891304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/891304</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Thu, 13 Oct 2005 11:55:28 GMT</pubDate></item></channel></rss>