Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi On Ereignisse zur Laufzeit hinzufuegen (https://www.delphipraxis.net/27644-ereignisse-zur-laufzeit-hinzufuegen.html)

m0sch3r 13. Aug 2004 13:38


On Ereignisse zur Laufzeit hinzufuegen
 
Hi

Einem Socket werden die On Ereignisse zu Laufzeit hinzugefügt
Delphi-Quellcode:
@FFTPConnections[high(FFTPConnections)].FFTPConnction.OnWorkEnd       := @FTP1WorkEnd;
Klapt ganz gut.Das On Ereignis wird aufgerufen...jedoch
Wenn ich dann versuche in dem OnEreigniss auf das Object zu zugreifen- geht es nicht..
Delphi-Quellcode:
Quellcode: markieren
procedure FTPWorkEnd(self : TObject; Sender: TObject; AWorkMode: TWorkMode);
begin
          TidFTP(Sender).Disconnect;
end;
Der Sender hat komische Werte...!!!!

Wie kann ich das Problemm umgehen...?

maximov 13. Aug 2004 14:25

Re: On Ereignisse zur Laufzeit hinzufuegen
 
Moin:
Delphi-Quellcode:
Quellcode: markieren
procedure FTPWorkEnd(self : TObject; Sender: TObject; AWorkMode: TWorkMode);
begin
  if sender is TidFtp then TidFTP(Sender).Disconnect;
end;
dann siehst du auch ob es tatsäcjlich ein ftp-ding ist :wink:

// Edit:

moment mal: seh grad du machst das mit ner regulären procedure! Warum das? macht normal keinen sinn?

Aber wenn du die addresse des events ermittelst (@bla) dann musst du aber auch die daten ermitteln, sprich das object angeben, sonst ist self nachher nicht definiert:

Delphi-Quellcode:
var m:TMethod;
..
m.code := @bla;
m.data := das object das später als self übergeben werden soll!
...
FFTPConnections[high(FFTPConnections)].FFTPConnction.OnWorkEnd := TDerEventTyp(m);
sonst kann das imo nur fehlschlagen :wink:

m0sch3r 13. Aug 2004 14:28

Re: On Ereignisse zur Laufzeit hinzufuegen
 
Spasiba Maksimov....:)))

maximov 13. Aug 2004 14:32

Re: On Ereignisse zur Laufzeit hinzufuegen
 
pasalschta!

m0sch3r 13. Aug 2004 14:49

Re: On Ereignisse zur Laufzeit hinzufuegen
 
Delphi-Quellcode:
         OnWorkEndMethod.Code := @FTP1WorkEnd;
         OnWorkEndMethod.Data := @FFTPConnections[high(FFTPConnections)].FFTPConnction;

         @FFTPConnections[high(FFTPConnections)].FFTPConnction.OnWorkEnd       := TWorkEndEvent(OnWorkEndMethod);
soweit das der Richtigkeit entschpricht.....!?

m0sch3r 13. Aug 2004 15:07

Re: On Ereignisse zur Laufzeit hinzufuegen
 
Товарищ Максимов...:)))

Если вы знаете метод упрошяющий ету процедуру обясните пожалуста...

maximov 13. Aug 2004 15:22

Re: On Ereignisse zur Laufzeit hinzufuegen
 
HeT! 3T0 NET Xapascho :stupid:
Delphi-Quellcode:
OnWorkEndMethod.Data := FFTPConnections[high(FFTPConnections)].FFTPConnction; // @ wäre doppelt gemoppelt, da objekte ja schon pointer sind
R idu b skafu *die letzten paar brocken russisch hervor kram*


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 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