AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein DEB DelphiEventBus vs. System.Messaging.TMessageManager
Thema durchsuchen
Ansicht
Themen-Optionen

DEB DelphiEventBus vs. System.Messaging.TMessageManager

Ein Thema von Rollo62 · begonnen am 11. Mai 2016 · letzter Beitrag vom 12. Mai 2016
 
Rollo62

Registriert seit: 15. Mär 2007
4.168 Beiträge
 
Delphi 12 Athens
 
#7

AW: DEB DelphiEventBus vs. System.Messaging.TMessageManager

  Alt 12. Mai 2016, 10:13
Dankesehr für die interessanten Vorschläge.

Ich habe mal die Frage ob man Sleep() benutzen sollte, ich meine das verwendet auf manchen Platformen ntern
Applications.ProcessMessages.
Wäre nicht ein Timer oder WaitFor sicherer ?

Ich hatte versucht mir das mit Generics in eine abgeleitete Klasse zu basteln,
damit ich noch spezifisches Payload als Parameter und Feedback als Result-Wert mit übergeben kann.

Damit kann ich dann auch anonyme Prozeduren benutzen.

Das ist zwar noch etwas unsauber und unübersichtlich, weil viel TestCode suboptimal drin ist, aber funktioniert gut und zuverlässig.

Sieht ungefähr so aus, geht sicher einfacher, und ich muss das mal aufräumen wenn Zeit ist ...

Delphi-Quellcode:
// Definiert eine universelle Message-Ableitung, mit PAyload und Feedback
type
  TMsgLink<T1, T2> = class(TMessage)
  private
    FPayload : T1;
    FFeedback : T2;

  protected

    constructor Create(const Payload : T1; const CbFkt : T2); overload;

  public

    procedure SendToSubscriber(const Sender : TObject); //(xVal : T1);

    property Payload : T1 read FPayload write FPayload;
    property Feedback : T2 read FFeedback write FFeedback;
  end;



// Definiert ein Boolean Callback, z.B. als Handled True/False
type
  TMsgFeedback_Boolean = TMsgFeedback<Boolean>;


// Definiert einen Parameter Record als PAyload für SendMEssage
type
  TMsgPayload = record
    public
      FCmd : Integer;
      FCmdSub : Integer;
      FText : String;

      procedure Setup(const iCmd, iCmdSub : Integer; sTxt: String);

    //procedure SetText(const sTxt : String);

    public

      property Cmd : Integer read FCmd write FCmd;
      property CmdSub : Integer read FCmdSub write FCmdSub;
      property Text : String read FText write FText;

  end;

// Baut alles zusammen zu einer einfachen MskLink Klasse
type
  TMsgLink_Cmd_Base = class (TMsgLink<TMsgPayload, TMsgFeedback_Boolean>)
                        constructor Create(const iCmd, iCmdSub : Integer;
                                           const strTxt : String;
                                           const fktAsw : TProc<TObject, Boolean>
                                          ); overload;

                        constructor SendMessage(const ACmp : TObject;
                                                const iCmd : Integer; iCmdSub : Integer = 0; const sTxt : String = '';
                                                const fktAsw : TProc<TObject, Boolean> = nil;
                                                bQueue : Boolean = True
                                               ); overload;

                     end;


// So kann ich verschiedene, speziele MsgLinks aufbauen, für verschiedene Aufgaben
Rollo
  Mit Zitat antworten Zitat
 


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 17:15 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