type
TDerived=class
public
function mymethod2;boolean;
end;
var
p:pointer;
begin
[red]p:=pointer(@TDerived.mymethod2);
与 p:[email protected]有何区别?[/red] 我试着用二种形式运行程序,结果都是一样的。
还请指点其中的区别,谢谢!
TDerived=class
public
function mymethod2;boolean;
end;
var
p:pointer;
begin
[red]p:=pointer(@TDerived.mymethod2);
与 p:[email protected]有何区别?[/red] 我试着用二种形式运行程序,结果都是一样的。
还请指点其中的区别,谢谢!
p:[email protected]//---2这两句代码都是取地址的操作。只是第一句中加入了一句强制类型转换。
其实用取址操作符@取出地址就可以了,这与你所定义的变量类型POINTER有关。
p:[email protected]//直接把函数地址赋给p其实没什么变化
多此一举就象这样一样 p:=Pointer(Pointer(pointer(@TDerived.mymethod2)))); @TDerived.mymethod2 的返回值本来就是 Pointer 类型的。
特别适用于你不熟悉TDerived中有点什么(或者记不清需要的那个方法/属性/变量名字又不想查帮助或根本没有帮助可查)的时候。