<?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 beim DynamicArray für TLabel]]></title><description><![CDATA[<p>Ich versuche Label mit einem DynamicArray zu erzeugen, erhalte jedoch eine AccessViolation und hab kein plan wieso.[cpp]UserLabels.Length++; //DynArray Länge incrementiern<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <strong>UserLabels[UserLabels.Length-1] = new TLabel(this); //Neues Label hinzufügen</strong><br />
UserLabels[UserLabels.Length-1]-&gt;Caption = Socket-&gt;RemoteHost;<br />
UserLabels[UserLabels.Length-1]-&gt;Font-&gt;Color = clRed;<br />
UserLabels[UserLabels.Length-1]-&gt;Parent = UserScrollBox;<br />
if(UserLabels.Length == 1) //positionieren<br />
{<br />
UserLabels[UserLabels.Length-1]-&gt;Top = 5;<br />
}<br />
else<br />
{<br />
UserLabels[UserLabels.Length-1]-&gt;Top =<br />
UserLabels[UserLabels.Length-2]-&gt;Top +<br />
UserLabels[UserLabels.Length-2]-&gt;Height + 3;<br />
}<br />
UserLabels[UserLabels.Length-1]-&gt;Left = 5;<br />
UserLabels[UserLabels.Length-1]-&gt;Visible = true; [/cpp]Der Debugger bleit bei der fett markierten Zeile stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/107871/accessviolation-beim-dynamicarray-für-tlabel</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 18:54:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/107871.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 23 Apr 2005 21:56:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to AccessViolation beim DynamicArray für TLabel on Sat, 23 Apr 2005 21:56:40 GMT]]></title><description><![CDATA[<p>Ich versuche Label mit einem DynamicArray zu erzeugen, erhalte jedoch eine AccessViolation und hab kein plan wieso.[cpp]UserLabels.Length++; //DynArray Länge incrementiern<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <strong>UserLabels[UserLabels.Length-1] = new TLabel(this); //Neues Label hinzufügen</strong><br />
UserLabels[UserLabels.Length-1]-&gt;Caption = Socket-&gt;RemoteHost;<br />
UserLabels[UserLabels.Length-1]-&gt;Font-&gt;Color = clRed;<br />
UserLabels[UserLabels.Length-1]-&gt;Parent = UserScrollBox;<br />
if(UserLabels.Length == 1) //positionieren<br />
{<br />
UserLabels[UserLabels.Length-1]-&gt;Top = 5;<br />
}<br />
else<br />
{<br />
UserLabels[UserLabels.Length-1]-&gt;Top =<br />
UserLabels[UserLabels.Length-2]-&gt;Top +<br />
UserLabels[UserLabels.Length-2]-&gt;Height + 3;<br />
}<br />
UserLabels[UserLabels.Length-1]-&gt;Left = 5;<br />
UserLabels[UserLabels.Length-1]-&gt;Visible = true; [/cpp]Der Debugger bleit bei der fett markierten Zeile stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/773866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/773866</guid><dc:creator><![CDATA[wedmer]]></dc:creator><pubDate>Sat, 23 Apr 2005 21:56:40 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation beim DynamicArray für TLabel on Sat, 23 Apr 2005 22:30:28 GMT]]></title><description><![CDATA[<p>Schrecklicher Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/773878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/773878</guid><dc:creator><![CDATA[comment.]]></dc:creator><pubDate>Sat, 23 Apr 2005 22:30:28 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation beim DynamicArray für TLabel on Sat, 23 Apr 2005 22:39:52 GMT]]></title><description><![CDATA[<p>Das hilft mir nicht gerade weiter, könntest du mir sage, was daran so schrecklich ist, und was ich tun muss, damit es geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/773881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/773881</guid><dc:creator><![CDATA[wedmer]]></dc:creator><pubDate>Sat, 23 Apr 2005 22:39:52 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation beim DynamicArray für TLabel on Sun, 24 Apr 2005 07:31:05 GMT]]></title><description><![CDATA[<p>Die Ursache für das Problem muss an anderer Stelle im Code liegen, der hier gezeigte Abschnitt ist soweit in Ordnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/773922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/773922</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Sun, 24 Apr 2005 07:31:05 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation beim DynamicArray für TLabel on Sun, 24 Apr 2005 10:30:00 GMT]]></title><description><![CDATA[<p>An dieser Stelle hätte ich jetzt mal eine Frage:<br />
Wenn ich statt</p>
<pre><code class="language-cpp">UserLabels[UserLabels.Length-1] = new TLabel(this);            //Neues Label hinzufügen
UserLabels[UserLabels.Length-1]-&gt;Caption = Socket-&gt;RemoteHost;
//[...]
</code></pre>
<p>schreibe</p>
<pre><code class="language-cpp">TLabel* Lbl = new TLabel(this);
UserLabels[UserLabels.Length-1] = Lbl;
Lbl-&gt;Caption = Socket-&gt;RemoteHost;
//[...]
</code></pre>
<p>Ist das dann im Zugriff schneller als die erste Version? Ich muss ja nicht jedesmal aus dem Array den entsprechenden Eintrag &quot;raussuchen&quot;, sonder gebe die Adresse direkt an?<br />
Oder tut sich das nicht viel, da das ein Unterschied von villeicht 3 Befehlen oder so ist?</p>
<p>Ich benutze bisher immer die Letzte Variante, allein desshalb, weils weniger zu tippen ist. Es würde mich aber trotzdem mal interessieren, ob der Zugriff über den Index &quot;viel oder wenig&quot; Zeit beansprucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/774011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/774011</guid><dc:creator><![CDATA[-**xXx**-]]></dc:creator><pubDate>Sun, 24 Apr 2005 10:30:00 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation beim DynamicArray für TLabel on Sun, 24 Apr 2005 11:17:19 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Ist das dann im Zugriff schneller als die erste Version? Ich muss ja nicht jedesmal aus dem Array den entsprechenden Eintrag &quot;raussuchen&quot;, sonder gebe die Adresse direkt an?<br />
Oder tut sich das nicht viel, da das ein Unterschied von villeicht 3 Befehlen oder so ist?</p>
</blockquote>
<p>Das zweite ist schon schneller. Allerdings nur ein paar Takte, denn Arrays sind so aufgebaut, das Zugriffe mit schneller Speicherarithmetik erfolgen können, im Gegensatz zu Listen, wo alle vorliegenden Elemente durchlaufen werden müßen.</p>
<p>Die zweite Variante halte ich einfach für eleganter.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/774058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/774058</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 24 Apr 2005 11:17:19 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation beim DynamicArray für TLabel on Sun, 24 Apr 2005 19:38:37 GMT]]></title><description><![CDATA[<p>Ich bin dabei eine Client Server Anwendung zu schreiben. Der Code ist Teil des OnClientConnect Events. Dies ist auch die einzige Stelle, bei der ich das DynArray verwende. Ich habe jetzt auch mal die Variante von =]xXx[=- verwendet, komischer weise gehts jetzt. Natürlich habe ich nichts dagegen, dass es jetzt funktioniert, ich möchtet trotzdem gärne wissen, weshalb es vorhin nicht ging.<br />
Hier ist mal der ganze OnClientConnect Event:</p>
<pre><code class="language-cpp">void __fastcall TMainForm::ServerSocketClientConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
   int Size;
   TLabel* TempLabel = new TLabel(this);                      //TempLabel für DynArray
   if(SearchUser(Socket-&gt;RemoteHost) &lt; 0)                     //neuer User
   {
      Size = User.Length;
      User.Length++;
      User[Size]-&gt;Name = Socket-&gt;RemoteHost;
      User[Size]-&gt;State = NewUserState;
      User[Size]-&gt;Connectet = false;
   }
   if(User[SearchUser(Socket-&gt;RemoteHost)]-&gt;Connectet)        //Überprüfen, ob User bereits connectet
   {
      Socket-&gt;SendText(AllreadyConnectetMessage);             //Fehlermeldung an Client senden
      Socket-&gt;Disconnect(Socket-&gt;SocketHandle);               //Verbindung zu Client trennen
   }
   else
   {
      TempLabel-&gt;Caption = Socket-&gt;RemoteHost;                //Name des Client
      TempLabel-&gt;Font-&gt;Color = clRed;                         //Textfarbe rot
      TempLabel-&gt;Parent = UserScrollBox;
      if(UserLabels.Length &lt;= 1)                              //positionieren
      {
         TempLabel-&gt;Top = 5;
      }
      else
      {
         TempLabel-&gt;Top = UserLabels[Size-1]-&gt;Top +
         TempLabel-&gt;Height + 3;
      }
      TempLabel-&gt;Left = 5;
      TempLabel-&gt;Visible = true;                              //Anzeigen
      UserLabels.Length++;                                    //DynArray Länge incrementiern
      UserLabels[UserLabels.Length-1] = TempLabel;            //Neues Label hinzufügen
      Socket-&gt;SendText(SendPasswordMessage);                  //Passwort anfordern
   }
}
</code></pre>
<p>Ich hab da jetzt noch ne andere Frage. Ich erstelle ja jetzt ein temporäres Label um die elegantere Variante zu nutzen. Sollte ich dies nicht vor beenden des Events wieder deleten? Bloss wenn ich das mache, wird es nicht angezeigt. Ha da glaubs etwas noch nicht so ganz verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/774509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/774509</guid><dc:creator><![CDATA[wedmer]]></dc:creator><pubDate>Sun, 24 Apr 2005 19:38:37 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation beim DynamicArray für TLabel on Sun, 24 Apr 2005 19:51:52 GMT]]></title><description><![CDATA[<p>wedmer schrieb:</p>
<blockquote>
<p>Ich erstelle ja jetzt ein temporäres Label</p>
</blockquote>
<p>Nein. Du erstellst einen temporären Zeiger auf ein Label.</p>
<p>Gruß,</p>
<p>Alexander</p>
]]></description><link>https://www.c-plusplus.net/forum/post/774520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/774520</guid><dc:creator><![CDATA[Alexander Kempf]]></dc:creator><pubDate>Sun, 24 Apr 2005 19:51:52 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation beim DynamicArray für TLabel on Mon, 25 Apr 2005 08:08:46 GMT]]></title><description><![CDATA[<p>Ja ok, hast recht es ist ein Zeiger. Aber trotzdem sollte ich doch den Speicher, den ich für das Label reserviere wieder frei geben, oder nicht? Bin verwirrt. Mit der Zeile</p>
<pre><code class="language-cpp">TLabel* TempLabel = new TLabel(this);
</code></pre>
<p>erstelle ich doch ein Zeiger <strong>TempLabel</strong> auf den Speicher, den ich mit <strong>new TLabel(this)</strong> reserviere, oder? Und den sollte ich doch am Ende es Events wieder frei geben, oder? Nur wie? Wenn ich einfach ein <strong>delete TempLabel;</strong> am Schluss schreibe, wird das Label nicht angezeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/774668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/774668</guid><dc:creator><![CDATA[wedmer]]></dc:creator><pubDate>Mon, 25 Apr 2005 08:08:46 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation beim DynamicArray für TLabel on Mon, 25 Apr 2005 08:23:37 GMT]]></title><description><![CDATA[<p>schritt 1: du erstellst einen zeiger auf ein TLabel (TempLabel)<br />
schritt 2: du reservierst speicher für das TLabel<br />
Schritt 3: du übergibst den Zeiger(die Speicheradresse) an UserLabels.</p>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox11742" checked="true" /><label for="checkbox11742">auch genau dort drauf!</label></div><br />
<div class="plugin-markdown"><input type="checkbox" id="checkbox11741" checked="true" /><label for="checkbox11741">änderst du auch etwas an TempLabel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></label></div></p>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox11743" checked="true" /><label for="checkbox11743">wieder frei</label></div></p>
]]></description><link>https://www.c-plusplus.net/forum/post/774681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/774681</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Mon, 25 Apr 2005 08:23:37 GMT</pubDate></item><item><title><![CDATA[Reply to AccessViolation beim DynamicArray für TLabel on Mon, 25 Apr 2005 09:06:43 GMT]]></title><description><![CDATA[<p>Danke, jetzt hab ichs auch kapiert. hmm, ich sollte glaubs mal wieder etwas mehr schalfen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/774702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/774702</guid><dc:creator><![CDATA[wedmer]]></dc:creator><pubDate>Mon, 25 Apr 2005 09:06:43 GMT</pubDate></item></channel></rss>