Delphi 从指针调用匿名函数

Delphi 从指针调用匿名函数,delphi,anonymous-function,delphi-xe7,Delphi,Anonymous Function,Delphi Xe7,我在尝试从指针变量调用匿名方法时遇到访问冲突 var Proc : TProc; Pt : Pointer; begin Proc := procedure begin ShowMessage('Hello World'); end; Pt := @Proc; TProc(Pt)(); end; 在调试中,我看到Pt被赋值了这不会很好地结束,但您所做的类似于p:=@SomeInt;X:=整数(P)。你取了anon的地址,所以你需要取消对该地址的引用。但正如

我在尝试从
指针
变量调用匿名方法时遇到访问冲突

var
  Proc : TProc;
  Pt : Pointer;
begin
  Proc := procedure
  begin
    ShowMessage('Hello World');
  end;

  Pt := @Proc;
  TProc(Pt)();
end;

在调试中,我看到
Pt
被赋值了

这不会很好地结束,但您所做的类似于
p:=@SomeInt;X:=整数(P)
。你取了anon的地址,所以你需要取消对该地址的引用。但正如我所说,这很可能不会有好的结局。大概在您的真实代码中,您希望将指针存储在某个地方。这样做的背后是引用计数。在这里,您实际上想要实现什么?取消引用工作得很好
TProc(Pt^)(。感谢您的警告,一旦my
Proc
变量超出范围,指针将无法安全使用。我只是在玩,没有任何真正的计划,但我不理解访问violation@Fabrizio:正确。如果处理其他托管类型(如字符串和动态数组),也会遇到同样的问题。别那么做@AndreasRejbrand和records@Bitman:不是POD记录。仅包含托管类型(如字符串)的记录。POD记录是简单的值类型,如整数或静态整数数组。