Ich mache zwar immer viele dumme Fehler, aber darüber bin ich lustigerweise noch nie gestolpert. Wahrscheinlich weil ich, Java-geschädigt, nie Properties verwende. Mit Gettern (siehe Code unten) fällt einem das irgendwie leichter auf.
Hier einmal die Kurzfassung, ohne Interfaces, Properties und Listen:
Delphi-Quellcode:
program Project10;
{$APPTYPE CONSOLE}
{$R *.res}
uses System.SysUtils;
type TProcContainer = class
strict protected var proc: TProc;
public
constructor Create(const proc: TProc);
function getProc(): TProc;
end;
constructor TProcContainer.Create(const proc: TProc);
begin
inherited Create();
self.proc := proc;
end;
function TProcContainer.getProc(): TProc;
begin
Result := proc;
end;
var
myContainer: TProcContainer;
begin
myContainer := TProcContainer.Create(
procedure
begin
WriteLn('Hallo Welt');
end
);
myContainer.getProc(); // Tut nichts
myContainer.getProc()();
end.
Die Zeile
myContainer.getProc()();
sieht schon schräg aus, aber, wie du ja auch sagst, so ist es richtig