AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ein Event 2 Empfänger? Geht das?

Ein Thema von Corelgott · begonnen am 18. Aug 2005 · letzter Beitrag vom 23. Aug 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Corelgott
Corelgott

Registriert seit: 11. Apr 2003
Ort: Lübeck
213 Beiträge
 
Delphi 2006 Enterprise
 
#11

Re: Ein Event 2 Empfänger? Geht das?

  Alt 23. Aug 2005, 13:37
hmm würde dann jungefähr so aussehen:

Delphi-Quellcode:
...
_events : Array of TNotifyEvent;
...


procedure TObj.raiseOnChange;
var
  i : Integer;
begin
  if length(_events) > 0 then
    for i := 0 to length(_events) - 1 do
     _events[i](self);
end;

function TObj._getEvent: TNotifyEvent;
begin
  result := _events[0];
end;
oder?

was mache ich mit dem fall, dass _events[0] nix is? nil kann ich nicht zurückgeben...
(bzw. habe ich keinen plan wie ich dann "nil" zu TNotifyEvent casten sollte / kann )

Und noch was zur generellen lösung:
da bekomme ich wenn ich mein Programm beende den Fehler s.o. "%p ungültig oder Argument nicht kompatibel"...
hmmm.... so ganz kann es das ned sein... glaube ich...

Oder missverstehe ich dich?

thx
Corelgott
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#12

Re: Ein Event 2 Empfänger? Geht das?

  Alt 23. Aug 2005, 13:54
Nicht ganz!
Zitat von Corelgott:
was mache ich mit dem fall, dass _events[0] nix is? nil kann ich nicht zurückgeben...
Eben deswegen sollst du ja deinen eigenen statischen Eventhandler immer zurückgeben, niemals einen der dynamischen.
  Mit Zitat antworten Zitat
Benutzerbild von Corelgott
Corelgott

Registriert seit: 11. Apr 2003
Ort: Lübeck
213 Beiträge
 
Delphi 2006 Enterprise
 
#13

Re: Ein Event 2 Empfänger? Geht das?

  Alt 23. Aug 2005, 14:13
hmmm... aso.... klar...
sry nicht genau genung gelesen...

!!aber das scheint zu funzen...!!

hatte noch dazu nen Free-Fehler, den ich gerade gefunden habe ^^

Thx Olli für das ganze Denken tun und die Hilfestellung

cya
Corelgott
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#14

Re: Ein Event 2 Empfänger? Geht das?

  Alt 23. Aug 2005, 14:34
Bin jetzt allerdings nicht ganz sicher, ob es sauber ist über den Adress-Operator (@) eine Methodenadresse zurückzugeben. Könnte auch fehlschlagen (ich sage nur VTable). Also da müßtest du eventuell nochmal testen.

Viel Erfolg.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#15

Re: Ein Event 2 Empfänger? Geht das?

  Alt 23. Aug 2005, 14:45
Wie wäre es denn mit sowas?

Delphi-Quellcode:

type
  TMyType ...
  private
    _events = array of TNotifyEvent;
    procedure myOnChange(Sender: TObject);
    procedure raiseOnChange(Sender: TObject);
  
    function GetEvent: TNotifyEvent;
    procedure SetEvent(Event: TNotifyEvent);
  public
    property OnChange: TNotifyEvent read GetEvent write SetEvent;

...

procedure TMyType.myOnChange(Sender: TObject);
begin
  raiseOnChange(Sender);
end;

procedure TMyType.raiseOnChange(Sender: TObject);
var i: Integer;
begin
  for i := 0 to High(_events) do
    if Assigned(_events[i]) then
      _events[i](Sender);
end;

functin TMyType.GetEvent: TNotifyEvent;
begin
  Result := myOnChange;
end;
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#16

Re: Ein Event 2 Empfänger? Geht das?

  Alt 23. Aug 2005, 14:50
Zitat von Dax:
Wie wäre es denn mit sowas?[...]
a.) du kannst einen Funktionspointer einfach so zurückgeben? Ohne @?
b.) wenn nicht, bleibt das von mir direkt drüber beschriebene Problem. Diese Adressen sind dynamisch, daher bin ich nicht sicher. ZB darf man ja auch keine Methoden als API-Callbacks übergeben, selbst wenn man sich um den Self-Pointer selber kümmert.
  Mit Zitat antworten Zitat
Benutzerbild von Corelgott
Corelgott

Registriert seit: 11. Apr 2003
Ort: Lübeck
213 Beiträge
 
Delphi 2006 Enterprise
 
#17

Re: Ein Event 2 Empfänger? Geht das?

  Alt 23. Aug 2005, 15:01
hmm

das scheint alles zu passen...
es stürzt wenigstens nicht mehr ab...
funzen tut das alles insgesammt auch so wie es soll...

(Ok außer dem OI ruft vermutlich "niemand" den getter auf...)

Lol So lange es passt...
Ich mache das nun so wie Dax das vorschlägt...

thx
Corelgott
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz