Der Typ
System.SysUtils.TProc
ist definiert als
reference to procedure
.
Als Komfortfunktion kann ich somit nicht nur anonyme Methoden reinstecken, sondern auch "klassische" Prozeduren sowie eine "procedure of object". Beispiel:
Delphi-Quellcode:
type
TMyObject = class
class procedure p();
end;
procedure p();
var
myObject: TMyObject;
p1, p2, p3: TProc;
begin
p1 := p;
p2 :=
procedure()
begin
WriteLn('Hello world')
end;
p3 := TMyObject.p;
end;
Ganz dumme Frage: Kann ich das abstellen? Die Zuweisungen an p1 und p3 klappen, soweit ich das verstanden habe, nur weil der Compiler im Endeffekt
Delphi-Quellcode:
p1 :=
procedure()
begin
p();
end;
und
Delphi-Quellcode:
p3 :=
procedure()
begin
TMyObject.p();
end;
draus macht. Kann ich dieses ungewollte "Auto-Boxing" abstellen sodass nur p2 eine gültige Zuweisung ist?