type Func = function(X: Integer): Integer;
var   F: Func;   P: Pointer;   N: Integer;
F := Func(P);           { Assign procedural value in P to F }
Func(P) := F;           { Assign procedural value in F to P } 
@F := P;                { Assign pointer value in P to F } 
P := @F;                { Assign pointer value in F to P } 
N := F(N);              { Call function via F } 
N := Func(P)(N);        { Call function via P }

解决方案 »

  1.   

    type Func = function(X: Integer): Integer; // Func是一个函数指针类型
    var   F: Func; // F是一个函数指针
          P: Pointer; // void指针
          N: Integer; 
    F := Func(P);           { Assign procedural value in P to F } 使F指向P指向的地址p指向某个函数的入口地址 经过类型强行转换
    Func(P) := F;           { Assign procedural value in F to P } 使P指向F指向的地址p指向某个函数的入口地址 经过类型强行转换
    @F := P;                { Assign pointer value in P to F }  // 这两个不太清楚  待会去查查
    P := @F;                { Assign pointer value in F to P } 
    N := F(N);              { Call function via F } F指向某个函数入口地址 就相当于普通调用 <其对应的函数一样>
    N := Func(P)(N);        { Call function via P } P也指向F所指向的函数入口地址 不过由于是VOID型 所以要用Func类型转换主要 是 VOID指针、函数指针,类型匹配,类型转换。。