Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#1

Methode in Consolenanwendung erstellen

  Alt 26. Mai 2020, 13:34
Hi,

ich habe ein Consolenanwendung. In der erzeuge ich ein Object und möchte nun einem Event des Objects eine Methode zuweisen. Geht nicht, weil ich nur prozeduren habe.
Wie erstellt man in einer Cosolenanwendung eine Methode?

Object:
Delphi-Quellcode:
unit uTestObject;

interface

type
  TOnLog=procedure(Sender: TObject; LogText: string) of object;

  TTestObject=class
  private
    FOnLog: TOnLog;
    procedure DoLog(LogText: string);
  public
    procdure MachWas;
  published
    property OnLog: TOnLog read FOnLog write FOnLog;
  end;

Implementation

proceudre TTestObject.DoLog(LogText: string);
begin
  if Assigned(FOnLog) then
    FOnLog(self, LogText);
end;

procedure TTestObject.MachWas;
begin
  DoLog('TestLogText');
end;

end.
Consolenanwendung:
Delphi-Quellcode:
program CMDTest;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  uTestObject in 'uTestObject.pas';

var
  TestObject: TTestObject;

proceudre LogMsg(Sender: TObject; LogText: string);
begin
  MachIrgendwasMitLogText;
end;

begin
  TestObject:=TTestObject.Create;
  try
    TestObject.OnLog:=LogMsg; //<---Das wird nicht compiliert: [dcc32 Fehler] CMDTest.dpr(104): E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'
    TestObject.MachWas;
  finally
    TestObject.free;
  end;
end.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (26. Mai 2020 um 16:09 Uhr)
  Mit Zitat antworten Zitat