AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Ereignis in einer Unit zuweisen

Ein Thema von Int3g3r · begonnen am 23. Jun 2020 · letzter Beitrag vom 24. Jun 2020
Antwort Antwort
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
95 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Ereignis in einer Unit zuweisen

  Alt 23. Jun 2020, 16:51
Delphi-Version: 5
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
Miniaturansicht angehängter Grafiken
unitevent.jpg  
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
5.309 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Ereignis in einer Unit zuweisen

  Alt 23. Jun 2020, 16:59
Delphi-Quellcode:
deinServer := TServer.Create();
deinTcpServer.OnExecute := deinServer.tcpServerExecute;
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
95 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Ereignis in einer Unit zuweisen

  Alt 24. Jun 2020, 07:23
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
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
5.309 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Ereignis in einer Unit zuweisen

  Alt 24. Jun 2020, 07:33
Du willst ja nicht tcpServerExecute mit dem Parameter aufrufen, du willst ja eine Referenz auf tcpServerExecute "an sich" und dies dem OnExecute zuweisen.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.237 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Ereignis in einer Unit zuweisen

  Alt 24. Jun 2020, 12:06
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.
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
837 Beiträge
 
#6

AW: Ereignis in einer Unit zuweisen

  Alt 24. Jun 2020, 14:24
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.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf