procedure DoSomething(const PjInt:integer);
var
pJ:pInteger;
ppj:Pointer;
inPJ:pointer;
tmpInt:integer;
begin
tmpInt:=pjInt;
//申请一个整型的空间
new(pJ);
//取指向其地址的指针
ppj:=@pJ;
//u将传入的地址拷贝到pJ中
inPJ:=@tmpInt;
move(inPJ,ppj,4);
//显示它的内容
showmessage( inttostr(pJ^));// 《===========我预想的是显示5,但结果却是显示0.不知为何。请教
dispose(pj);end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
pJ:integer;
pI:Pointer;
ppI,ppJ:Pointer;begin
//变量I设为5
i:=5;
//i的地址
pI:=@i;
//pj的地址
ppJ:=@pj;
//取 指向i的地址的指针
ppI:=@pI;
//将指向I的地址放入pj中
move(ppI,ppJ,4);
//将它作为一个整数(4位BYTE)型的参数
DoSomething(pJ);end;
var
pJ:pInteger;
ppj:Pointer;
inPJ:pointer;
tmpInt:integer;
begin
tmpInt:=pjInt;
//申请一个整型的空间
new(pJ);
//取指向其地址的指针
ppj:=@pJ;
//u将传入的地址拷贝到pJ中
inPJ:=@tmpInt;
move(inPJ,ppj,4);
//显示它的内容
showmessage( inttostr(pJ^));// 《===========我预想的是显示5,但结果却是显示0.不知为何。请教
dispose(pj);end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
pJ:integer;
pI:Pointer;
ppI,ppJ:Pointer;begin
//变量I设为5
i:=5;
//i的地址
pI:=@i;
//pj的地址
ppJ:=@pj;
//取 指向i的地址的指针
ppI:=@pI;
//将指向I的地址放入pj中
move(ppI,ppJ,4);
//将它作为一个整数(4位BYTE)型的参数
DoSomething(pJ);end;
在move(ppI, ppJ, 4)中,只是将ppJ的地址设为和ppI一样。
在DoSomething中,move要改成为样,move(inPJ^,Pointer(ppj^)^, 4); 这样才会显示5。
var
pJ:pInteger;
ppj:Pointer;
inPJ:pointer;
tmpInt:integer;
begin
tmpInt:=pjInt;
new(pJ); ppj:=pJ; //去掉了@inPJ:=@tmpInt; MoveMemory(ppj,inPJ,SizeOf(integer)); //改为MoveMemory showmessage( inttostr(pJ^));// 《===========我预想的是显示5,但结果却是显示0.不知为何。请教
dispose(pj); end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
pJ:integer;
pI:Pointer;
ppI,ppJ:Pointer; begin i:=5; pI:=@i; ppJ:=pj; ppI:=pI; //去掉了@ MoveMemory(ppJ, ppI ,SizeOf(integer)); //改为MoveMemory DoSomething(pJ); end;