![]() |
Re: Ein Event 2 Empfänger? Geht das?
hmm würde dann jungefähr so aussehen:
Delphi-Quellcode:
oder?
...
_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; 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 :shock: ) 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 |
Re: Ein Event 2 Empfänger? Geht das?
Nicht ganz!
Zitat:
|
Re: Ein Event 2 Empfänger? Geht das?
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 |
Re: Ein Event 2 Empfänger? Geht das?
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. |
Re: Ein Event 2 Empfänger? Geht das?
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; |
Re: Ein Event 2 Empfänger? Geht das?
Zitat:
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. |
Re: Ein Event 2 Empfänger? Geht das?
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz