2011-10-16 16 views
8

Nie rozumiem dlaczego następujący niewielka aplikacja konsoli nie kompiluje:Korzystając z Delphi, nie można użyć typu anonymus jako typu rekordu?

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. 

Odpowiedz

11

Należy dodać nawias oznacza, że ​​dzwonisz procedury; tj.,

+0

Zwykłe stare procedury pascowe można wywoływać bez nawiasów, jak sądzę, procedura-ref jest inna. –

+0

Dzięki, nie spodziewałem się tego. Jaki może być powód tego wymogu? Ile to jest inne niż z myProc; linia? –

+0

@WarrenP: IIRC tak było w przypadku odwołań do metod klas, przynajmniej gdy przekazałeś je do innej funkcji jako argument ... –

Powiązane problemy