Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

"reference to procedure" vs. "procedure"

  Alt 29. Jan 2018, 12:16
Delphi-Version: 5
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?
  Mit Zitat antworten Zitat