<?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[Events &amp;amp;&amp;amp; E2347]]></title><description><![CDATA[<pre><code class="language-cpp">private:
typedef void __fastcall (__closure *TSend)(TCustomWinSocket*, AnsiString, signed __int16);
typedef void __fastcall (__closure *TExecQuery)(AnsiString);
//...
public:
__property TExecQuery ExecQuery = {};
__property TSend Send = {read=FSend, write=FSend};
//...
void __fastcall FSend (TCustomWinSocket* Socket, AnsiString value, signed __int16 to)
{
//...halt die Funktion...
}
</code></pre>
<pre><code class="language-cpp">a-&gt;ExecQuery = b-&gt;execquery;
</code></pre>
<p>(in meiner Main-Form)</p>
<p>das war ein teil des quellcodes für mehrere (hier 2 ^^) Events, die ich festgelegt habe - um halt auf bestimmt Ereignisse reagieren zu können - eins dieser Events muss ich direkt auf eine andere Klasse verlinken-das kann ich aber nicht andersrum machen, weil ich die beiden Klassen in meiner Main-Form einbinde und ich nciht vorhabe hin und her zu includen...</p>
<p>Fehlermeldung ist übrigens die 2347 (Parameter mismatch in read {bzw. write} access specifier of property TSend.</p>
<p>Jetzt meine Frage:<br />
was hab ich falsch gemacht - und macht man das überhaupt so, oder würdet ihr die Klassen noch mal untereinander includen oder was weiß ich?<br />
Danke im Vorraus... wtf wird V o r r a u s zensiert? OO</p>
<p>Tom</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181939/events-amp-amp-e2347</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 18:20:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181939.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 19 May 2007 05:39:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Events &amp;amp;&amp;amp; E2347 on Sat, 19 May 2007 05:39:30 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">private:
typedef void __fastcall (__closure *TSend)(TCustomWinSocket*, AnsiString, signed __int16);
typedef void __fastcall (__closure *TExecQuery)(AnsiString);
//...
public:
__property TExecQuery ExecQuery = {};
__property TSend Send = {read=FSend, write=FSend};
//...
void __fastcall FSend (TCustomWinSocket* Socket, AnsiString value, signed __int16 to)
{
//...halt die Funktion...
}
</code></pre>
<pre><code class="language-cpp">a-&gt;ExecQuery = b-&gt;execquery;
</code></pre>
<p>(in meiner Main-Form)</p>
<p>das war ein teil des quellcodes für mehrere (hier 2 ^^) Events, die ich festgelegt habe - um halt auf bestimmt Ereignisse reagieren zu können - eins dieser Events muss ich direkt auf eine andere Klasse verlinken-das kann ich aber nicht andersrum machen, weil ich die beiden Klassen in meiner Main-Form einbinde und ich nciht vorhabe hin und her zu includen...</p>
<p>Fehlermeldung ist übrigens die 2347 (Parameter mismatch in read {bzw. write} access specifier of property TSend.</p>
<p>Jetzt meine Frage:<br />
was hab ich falsch gemacht - und macht man das überhaupt so, oder würdet ihr die Klassen noch mal untereinander includen oder was weiß ich?<br />
Danke im Vorraus... wtf wird V o r r a u s zensiert? OO</p>
<p>Tom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1287778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1287778</guid><dc:creator><![CDATA[un)skilled]]></dc:creator><pubDate>Sat, 19 May 2007 05:39:30 GMT</pubDate></item><item><title><![CDATA[Reply to Events &amp;amp;&amp;amp; E2347 on Sun, 20 May 2007 08:25:36 GMT]]></title><description><![CDATA[<p>Dein Post ist ein wenig verwirrend. Bitte zeige mal die wichtigen Teile der Deklarationen aller beteiligten Klassen sowie den Kontext, in dem der Fehler auftritt.</p>
<p>un)skilled schrieb:</p>
<blockquote>
<p>Danke im ... wtf wird V o r r a u s zensiert? OO</p>
</blockquote>
<p>Bei mir wird &quot;Voraus&quot; nicht zensiert. Rate mal warum <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/1288288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288288</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Sun, 20 May 2007 08:25:36 GMT</pubDate></item><item><title><![CDATA[Reply to Events &amp;amp;&amp;amp; E2347 on Sun, 20 May 2007 09:49:49 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Die Property-Deklaration verlangt nach Gettern und Settern, bzw. direkten Attributen.</p>
<pre><code class="language-cpp">private:
typedef void __fastcall (__closure *TSend)(TCustomWinSocket*, AnsiString, signed __int16);
typedef void __fastcall (__closure *TExecQuery)(AnsiString);
//...
public:
__property TExecQuery ExecQuery = {};
__property TSend Send = {read=iSend, write=iSend, default=NULL}; 
  // Property für die verwendung mit dem Objekt Inspektor
//...
TSend iSend; // interes Attribut
</code></pre>
<p>So kannst du nun der Klasse eine Eventmethode passendes Types an die Eigenschaft Send zuweisen und innerhalb von anderen Klassenmethoden aus aufrufen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288318</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 20 May 2007 09:49:49 GMT</pubDate></item><item><title><![CDATA[Reply to Events &amp;amp;&amp;amp; E2347 on Sun, 20 May 2007 12:54:14 GMT]]></title><description><![CDATA[<p>danke für die Antwort - ich habe aber immernoch das gleiche Problem...<br />
wenn ich nun aber TSend FSend zusätzlich noch irgendwo hinschreib, dann kommt in der Funktionsdeklaration unten multiple deklaration of.... das stinkt bissl ^^<br />
ansonsten danke schon mal - auch, wenn ich ne verstanden hab, was bei dir anders gewesen sein soll...</p>
<p>history.h</p>
<pre><code class="language-cpp">class history
{
 private:
         typedef void __fastcall (__closure *TSend)(TCustomWinSocket*, AnsiString, signed __int16);
         typedef void __fastcall (__closure *TStatus)(AnsiString);
         typedef void __fastcall (__closure *TGet)(AnsiString, signed __int16);
         typedef void __fastcall (__closure *TExecQuery)(AnsiString);
 public:
        __property TExecQuery ExecQuery = {};
        __property TSend Send = {read=FSend, write=FSend};
        __property TStatus Status = {read=FGet, write=FStatus};
        __property TGet Get = {read=FGet, write=FGet};
        void __fastcall FStatus (AnsiString value)
         {
///...
         };
        void __fastcall FGet (AnsiString value, signed __int16 from)
         {
///...
         };
        void __fastcall FSend (TCustomWinSocket* Socket, AnsiString value, signed __int16 to)
         {
///...
       };
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1288437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288437</guid><dc:creator><![CDATA[un)skilled]]></dc:creator><pubDate>Sun, 20 May 2007 12:54:14 GMT</pubDate></item><item><title><![CDATA[Reply to Events &amp;amp;&amp;amp; E2347 on Sun, 20 May 2007 13:56:16 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Du hast den Sinn und Einsatz von Events noch nicht richtig verstanden.<br />
Mal eine kurze Erläuterung : Es gibt zwei verschiedene Klassen. Eine Eventauslösende (E_Send) und eine Eventauffangende (E_Catch). Die Auslösende Klasse weiß wie ausgelöst wird, aber nicht wie der Event verarbeitet werden soll. Die Auffangende weiß nicht wie der Event ausgelöst wird, aber wie der Event verarbeitet werden soll. Also muß sich die Auffangende Klasse bei der Auslösenden Klasse registrieren. Das sieht mit den VCL-Properties und einem einfachem TNotifyEvent so aus</p>
<pre><code class="language-cpp">class E_Send : public TObject
{
  ...
  private :
    TNotifyEvent iEvent;
  public :
    __property TNotifyEvent Event = {read = iEvent, write = iEvent, default = NULL};
  ...
  DoSomething();  
};
E_Send::DoSomething()
{
  ...
  // Hier ist dir Stelle wo der Event ausgelöst wird, wenn ein Ziel registriert ist
  if (iEvent)
    iEvent(this);
}
...
class E_Catch : public TObject
{
  ...
  void RegisterTo(T_Send* Send);
  void __fastcall OnSomething(TObject* Sender);
};
...
void E_Catch::RegisterTo(T_Send* Sender)
{
  // Ziel registriert sich bei Sender
  Send-&gt;Event = OnSomething;
}

void __fastcall E_Catch::OnSomething(TObject* Sender)
{
  // Ziel kann auf den Event reagieren
  ShowMessage(&quot;Something is happended!&quot;);
}
</code></pre>
<p>Wie du siehst ist es elementarer Bestandteil des Eventprinzips das die Events-Eigenschaft (__property Event) und die Event-Methode (OnSomethong) in zwei verschiedenen Klassen stecken. Denn Events sind zum Kommunizieren zwischen verschiedenen Klassen, nicht innerhalb einer einzelnen Klasse! Selbst bei Ableitungen wäre der Gebrauch von virtuellen Methoden besser als Events.</p>
<p>Du solltest also erstmal nochmal gründlich überlegen was du eigentlich erreichen willst und was du dafür für welche Mittel brauchst.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1288472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288472</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 20 May 2007 13:56:16 GMT</pubDate></item><item><title><![CDATA[Reply to Events &amp;amp;&amp;amp; E2347 on Sun, 20 May 2007 16:03:53 GMT]]></title><description><![CDATA[<p>Ja, ein Event ist hier schon richtig - danke Dir <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/1288555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1288555</guid><dc:creator><![CDATA[un)skilled]]></dc:creator><pubDate>Sun, 20 May 2007 16:03:53 GMT</pubDate></item></channel></rss>