2011-10-16 30 views
8

我不明白爲什麼以下的小控制檯應用程序不會編譯:使用Delphi,無法將anonymus類型用作記錄類型?

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. 

回答

11

您必須添加括號來表示你正在調用的程序;即

myRec.Proc(); 
+0

簡單的舊pascal程序可以不帶圓括號的調用,我猜一個Procedure-ref是不同的。 –

+0

謝謝,我沒想到會這樣。這個要求的原因是什麼?這與myProc有什麼不同?線? –

+0

@WarrenP:IIRC這也是類方法引用的情況,至少當你將它們作爲參數傳遞給其他函數時... –

相關問題