Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Ereignis in einer Unit zuweisen (https://www.delphipraxis.net/204736-ereignis-einer-unit-zuweisen.html)

Int3g3r 23. Jun 2020 16:51

Delphi-Version: 5

Ereignis in einer Unit zuweisen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Tag,

Ich möchte eine Unit schreiben die ich danach bei anderen Projekten wieder verwenden kann.
Diese Unit benutzt TidTCPServer.

Bei dem TidTCPServer gibt es ein OnExecute Event/Ereignis.

Wie lässt sich ein Ereignis im Programmcode zuweisen ? (Siehe Bild)

Da ich mich in einer Unit befinde kann ich den Objektinspektor nicht benutzen.
Ich möchte kein DataModul verwenden.
Dies Hilft meinem verständniss der Programmiersprachem, daher möchte ich dies hier ausprogrammieren.

Delphi-Quellcode:
procedure TServer.tcpServerExecute(AContext: TIdContext);
begin
   try
      AContext.Connection.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8; // uses IdGlobal
      AContext.Connection.IOHandler.ReadStrings(memMessage.Lines);
      AContext.Connection.IOHandler.WriteLn('#OK#');
   finally
      AContext.Connection.Disconnect;
   end;
end;
Danke für die Hilfe,
Int3g3r

Der schöne Günther 23. Jun 2020 16:59

AW: Ereignis in einer Unit zuweisen
 
Delphi-Quellcode:
deinServer := TServer.Create();
deinTcpServer.OnExecute := deinServer.tcpServerExecute;

Int3g3r 24. Jun 2020 07:23

AW: Ereignis in einer Unit zuweisen
 
Vielen Dank Günther,

Das was mich verwirrt hat ist die übergabe des Parameters.

procedure TServer.tcpServerExecute(AContext: TIdContext);

Habe es nie versucht ohne Parameter zuzuweisen.
Dazu wusste ich nicht was ich übergeben sollte.

Gruss,
Int3g3r

Der schöne Günther 24. Jun 2020 07:33

AW: Ereignis in einer Unit zuweisen
 
Du willst ja nicht tcpServerExecute mit dem Parameter aufrufen, du willst ja eine Referenz auf tcpServerExecute "an sich" und dies dem OnExecute zuweisen.

generic 24. Jun 2020 12:06

AW: Ereignis in einer Unit zuweisen
 
In meinen Youtube Kanal gibt es etwas was hier ganz gut passt:
https://www.youtube.com/watch?v=7PL_H2aBUOI

Kannst ja mal schreiben ob es dir hilft.

Hobbycoder 24. Jun 2020 14:24

AW: Ereignis in einer Unit zuweisen
 
Du kannst natürlich in deiner eigenen Unit einen eigenen Event definieren

Delphi-Quellcode:
TOnServerExecute=procedure(AContext: TIdContext) of object;

Type
  TServer=class
  private
    FOnServerExecute: TOnServerExecute;
  published
    property OnServerExecute: TOnServerExecute read FOnServerExecute write FOnServerExecute;
  end;

.
.
.
und dann im

Delphi-Quellcode:
procedure TServer.tcpServerExecute(AContext: TIdContext);
begin
   try
      AContext.Connection.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8; // uses IdGlobal
      AContext.Connection.IOHandler.ReadStrings(memMessage.Lines);
      AContext.Connection.IOHandler.WriteLn('#OK#');
      if Assigned(FOnServerExecute) then
        FOnServerExecute(AContext);
   finally
      AContext.Connection.Disconnect;
   end;
end;
über dieses Event das weitergeben.


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