Irgendwie wehrt sich da in mir was, Bibliotheken zu verwenden, die anonyme Prozeduren zum Designprinzip erheben. Ein Methodenzeiger mag vllt. etwas umständlich und altbacken wirken, räumt aber den Source auf.
Es wird ja niemand gezwungen, die anonyme Methode direkt beim Aufruf hinzuschreiben. Auch werden Methoden einer Klasse bei passender Signatur akzeptiert.
Delphi-Quellcode:
program Project746;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
type
TMyTest = class
private
procedure MyTest(Arg: Integer);
public
procedure CallTest;
end;
procedure Test(proc: TProc<Integer>);
begin
proc(42);
end;
procedure TMyTest.CallTest;
begin
Test(MyTest);
end;
procedure TMyTest.MyTest(Arg: Integer);
begin
Writeln(ClassName + '.MyTest(' + Arg.ToString + ')');
end;
procedure MyProc(Arg: Integer);
begin
Writeln('MyProc(' + Arg.ToString + ')');
end;
var
myTest: TMyTest;
begin
Test(MyProc);
myTest := TMyTest.Create;
try
myTest.CallTest;
Test(myTest.MyTest);
finally
myTest.Free;
end;
Readln;
end.