迷
迷糊
Unregistered / Unconfirmed
GUEST, unregistred user!
可以把一个普通变量的地址强制转换成integer传递,大家看下面的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
pint,ps:^integer;
c:integer;
begin
new(pint);
pint^:=100;
c:=integer(pint);
integer(ps):=c;
showmessage(inttostr(ps^));
dispose(pint)
end;
但是现在我想把一个函数指针强制转换为integer传递却不行?代码如下
type
myfunc=function(a,b:integer):integer;
function add(a,b:integer):integer;stdcall;
begin
result:=a+b;
end;
function TForm1.docalc(a, b, func: integer): integer;
var
pfunc:^myfunc;
begin
integer(pfunc):=func;
result:=pfunc^(a,b)
//这一步报内存访问错误
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(inttostr(docalc(5,10,integer(@add))));
end;
我的目的是在一个com组件中回调外部的一个方法,我想把外部方法的地址转换成integer传入(注:我不想用com的自定义类型传递),也许是异想天开吧,不知有没有可行性
procedure TForm1.Button1Click(Sender: TObject);
var
pint,ps:^integer;
c:integer;
begin
new(pint);
pint^:=100;
c:=integer(pint);
integer(ps):=c;
showmessage(inttostr(ps^));
dispose(pint)
end;
但是现在我想把一个函数指针强制转换为integer传递却不行?代码如下
type
myfunc=function(a,b:integer):integer;
function add(a,b:integer):integer;stdcall;
begin
result:=a+b;
end;
function TForm1.docalc(a, b, func: integer): integer;
var
pfunc:^myfunc;
begin
integer(pfunc):=func;
result:=pfunc^(a,b)
//这一步报内存访问错误
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(inttostr(docalc(5,10,integer(@add))));
end;
我的目的是在一个com组件中回调外部的一个方法,我想把外部方法的地址转换成integer传入(注:我不想用com的自定义类型传递),也许是异想天开吧,不知有没有可行性