<?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[Memory Feld]]></title><description><![CDATA[<p>Hallo,<br />
ich hab heute mal versucht ein Memory Spiel zu erstellen.<br />
Hab aber direkt, nachdem ich das Feld aus SpeedButtons erstellet habe, ein Probelm <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>
<pre><code class="language-cpp">TForm1 *Form1;
TSpeedButton* Karte;

int Karten_ID;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
    for(int x = 0; x &lt; 5; x ++){
        for(int y = 0; y &lt; 5; y ++){
            Karte          = new TSpeedButton(Form1);
            Karte-&gt;Parent  = Form1;
            Karte-&gt;Width   = 40;
            Karte-&gt;Height  = 80;
            Karte-&gt;Left    = 10 + (y * 45);
            Karte-&gt;Top     = 10 + (x * 85);
            Karte-&gt;Tag     = Karten_ID;
            Karte-&gt;OnClick = Karten_Klick;
            Karte-&gt;Caption = Karten_ID;
            Karten_ID ++;
        }
    }
}
</code></pre>
<p>Dann hab ich dynamisch eine OnClick Funktion aufgebaut ...</p>
<pre><code class="language-cpp">void __fastcall TForm1::Karten_Klick(TObject *Sender)
{
    Form1-&gt;Caption = Karte-&gt;Tag;
}
</code></pre>
<p>Nur wie mach ich es nun, dass der erkennt auf welchen Button ich klicke?<br />
Er zeigt mir so halt immer die letzte ID an. Also den Button 24 in diesem Fall ...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/132671/memory-feld</link><generator>RSS for Node</generator><lastBuildDate>Fri, 31 Jul 2026 11:52:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/132671.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Jan 2006 13:36:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Memory Feld on Thu, 12 Jan 2006 13:36:26 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich hab heute mal versucht ein Memory Spiel zu erstellen.<br />
Hab aber direkt, nachdem ich das Feld aus SpeedButtons erstellet habe, ein Probelm <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>
<pre><code class="language-cpp">TForm1 *Form1;
TSpeedButton* Karte;

int Karten_ID;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
    for(int x = 0; x &lt; 5; x ++){
        for(int y = 0; y &lt; 5; y ++){
            Karte          = new TSpeedButton(Form1);
            Karte-&gt;Parent  = Form1;
            Karte-&gt;Width   = 40;
            Karte-&gt;Height  = 80;
            Karte-&gt;Left    = 10 + (y * 45);
            Karte-&gt;Top     = 10 + (x * 85);
            Karte-&gt;Tag     = Karten_ID;
            Karte-&gt;OnClick = Karten_Klick;
            Karte-&gt;Caption = Karten_ID;
            Karten_ID ++;
        }
    }
}
</code></pre>
<p>Dann hab ich dynamisch eine OnClick Funktion aufgebaut ...</p>
<pre><code class="language-cpp">void __fastcall TForm1::Karten_Klick(TObject *Sender)
{
    Form1-&gt;Caption = Karte-&gt;Tag;
}
</code></pre>
<p>Nur wie mach ich es nun, dass der erkennt auf welchen Button ich klicke?<br />
Er zeigt mir so halt immer die letzte ID an. Also den Button 24 in diesem Fall ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/964582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/964582</guid><dc:creator><![CDATA[MemoryTester]]></dc:creator><pubDate>Thu, 12 Jan 2006 13:36:26 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Feld on Thu, 12 Jan 2006 13:39:09 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Schau mal in die <a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39207" rel="nofollow">FAQ</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/964587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/964587</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 12 Jan 2006 13:39:09 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Feld on Fri, 13 Jan 2006 08:53:38 GMT]]></title><description><![CDATA[<p>Hallo,<br />
mmh ja damit komm ich irgendwie nicht weiter ...<br />
Wie kann ich mit dem Code denn nun rausfinden, auf welchem Button ich geklickt habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965203</guid><dc:creator><![CDATA[MemoryTester]]></dc:creator><pubDate>Fri, 13 Jan 2006 08:53:38 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Feld on Fri, 13 Jan 2006 09:02:30 GMT]]></title><description><![CDATA[<p>dynamic_cast wird eine lösung sein</p>
<p>mfg<br />
BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965212</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Fri, 13 Jan 2006 09:02:30 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Feld on Fri, 13 Jan 2006 09:06:01 GMT]]></title><description><![CDATA[<p>und mach bitte<br />
TSpeedButton* Karte; und int Karten_ID; mal lokal im Konstruktor. Die haben da global nichts zu suchen. Desweiteren sollte Karten_ID vor der Verwendung auch noch initialisiert werden (auf 0).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965216</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 13 Jan 2006 09:06:01 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Feld on Fri, 13 Jan 2006 09:14:58 GMT]]></title><description><![CDATA[<p>Ups..<br />
wie ich gerade beim genaueren anschauen des Codes bemerkt habe, hast du ein Prinzipielles Speicherleck. <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="⚠"
    /></p>
<p>TSpeedButton* Karte; ist ja ein Pointer, den du jedesmal überschreibst.</p>
<p>aber für jedes <strong>new</strong> das du aufrufst musst du musst du auch ein <strong>delete</strong> aufrufen.<br />
aber wenn du deinen Pointer überschreibst, verliehrst du ja die Adresse des reservierten Speichers vom letzten TSpeedButton und kannst somit den Speicher nicht mehr freigeben.</p>
<p>du solltest mit einem Array an TSpeedButton arbeiten</p>
<p>mfg<br />
BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965226</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Fri, 13 Jan 2006 09:14:58 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Feld on Fri, 13 Jan 2006 09:26:04 GMT]]></title><description><![CDATA[<p>Das stimmt so nicht unbedingt. Mit<br />
Karte = new TSpeedButton(Form1);<br />
trägt er ja den SpeedButton in die Component-Liste der Form ein, welche dann auch für das Löschen zu sorgen hat. Wir haben hier also kein Speicherleck. Wenn man so wie ich vorgeschlagen hab die Variablen lokal macht, wird das deutlicher. Alternativ ist aber auch ein Array möglich.<br />
Was ist ein <em>Prinzipielles Speicherleck.</em> <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/965238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965238</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 13 Jan 2006 09:26:04 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Feld on Fri, 13 Jan 2006 09:45:15 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Das stimmt so nicht unbedingt. Mit<br />
Karte = new TSpeedButton(Form1);<br />
trägt er ja den SpeedButton in die Component-Liste der Form ein, welche dann auch für das Löschen zu sorgen hat. Wir haben hier also kein Speicherleck.</p>
</blockquote>
<p>Achja stimmt.. der Owner <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Aber wenn er auf die einzelnen SpeedButtoms zugreifen will, sollte er ein Array erstellen.</p>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Was ist ein <em>Prinzipielles Speicherleck.</em> <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>
</blockquote>
<p>etwas was mir in meiner halbverschlafenen müdigkeit gerade in denn sinn kam <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> <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>mfg<br />
BigNeal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965253</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Fri, 13 Jan 2006 09:45:15 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Feld on Fri, 13 Jan 2006 10:08:49 GMT]]></title><description><![CDATA[<p>BigNeal schrieb:</p>
<blockquote>
<p>Aber wenn er auf die einzelnen SpeedButtoms zugreifen will, sollte er ein Array erstellen.</p>
</blockquote>
<p>Wenn er nur über den OnClickEvent der SpeedButtons zugreifen will ist ein Array nicht nötig. Du hast ja selbst mit dynamic_cast die Lösung angedeutet.<br />
Das sollte für diese Fälle reichen.</p>
<pre><code class="language-cpp">void __fastcall TForm1::Karten_Klick(TObject *Sender)
{
  TSpeedButton *speed = dynamic_cast&lt;TSpeedButton*&gt;(Sender);
  if( speed != 0 ) 
  {   
    Form1-&gt;Caption = speed-&gt;Tag;
// mach jetzt irgendwas mit dem Button
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/965274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965274</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 13 Jan 2006 10:08:49 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Feld on Fri, 13 Jan 2006 10:22:12 GMT]]></title><description><![CDATA[<p>ich hätte eine paintbox und eine imagelist genommen.^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965292</guid><dc:creator><![CDATA[svw1899]]></dc:creator><pubDate>Fri, 13 Jan 2006 10:22:12 GMT</pubDate></item><item><title><![CDATA[Reply to Memory Feld on Fri, 13 Jan 2006 10:51:36 GMT]]></title><description><![CDATA[<p>Vielen Dank für die ganzen Antworten <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 />
Die Lösung von Braunstein klappt wunderbar!</p>
<p>Dankeschön</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965329</guid><dc:creator><![CDATA[MemoryTester]]></dc:creator><pubDate>Fri, 13 Jan 2006 10:51:36 GMT</pubDate></item></channel></rss>