2011-10-16 1 views
8

Je ne comprends pas pourquoi la petite application de console suivante ne compile pas:En utilisant Delphi, impossible d'utiliser le type anonyme comme type d'enregistrement?

program Project1; 

type 
    TProc = reference to procedure; 

    TMyRec = record 
    Proc: TProc; 
    end; 

var 
    myProc: TProc; 
    myRec: TMyRec; 

begin 
    myProc := procedure begin writeln; end; 
    myProc; // compiles fine 
    myRec.Proc := procedure begin writeln; end; 
    myRec.Proc; //E2014 Statement exptected, but expression of type 'TProc' found 
end. 

Répondre

11

Vous devez ajouter des parenthèses pour indiquer que vous appelez la procédure; c'est-à-dire,

myRec.Proc(); 
+0

Les anciennes procédures pascal peuvent être invoquées sans parenthèse, je suppose qu'une procédure-ref est différente. –

+0

Merci, je ne m'attendais pas à ça. Quelle pourrait être la raison de cette exigence? Combien cela est différent de myProc; ligne? –

+0

@WarrenP: IIRC cela était aussi le cas avec les références de méthode de classe, au moins quand vous les avez passées dans une autre fonction comme argument ... –

Questions connexes