如何将指针值转换为字符串
How to convert pointer value to a string
如何将指针值转换为字符串?想象一下:
procedure TForm1.Button1Click(Sender: TObject);
var DummyPointer :Pointer;
begin
DummyPointer := Addr(Sender);
ShowMessage(IntToStr(DummyPointer)); //this is it, what I can not solve... it casts error
end;
谢谢
像这样:
procedure TForm1.Button1Click(Sender: TObject);
var
DummyPointer :TPointer;
begin
DummyPointer := Addr(Sender);
ShowMessage(IntToStr(UIntPtr(DummyPointer)));
end;
对于Delphi7,使用:
ShowMessage(IntToStr(Cardinal(DummyPointer)));
首先,你写 TPointer
,但我假设你的意思是 Pointer
。
现在,给定一个指针 P
,诀窍是将其重新解释为本机大小的整数:例如 NativeInt(P)
。 NativeInt
是与指针大小相同的有符号整数类型。
因此,编译如下:
procedure TForm1.Button1Click(Sender: TObject);
var
DummyPointer: Pointer;
begin
DummyPointer := Addr(Sender);
ShowMessage(IntToStr(NativeInt(DummyPointer)));
end;
这将显示 Sender
变量的地址。
但是,这可能不是您想要的。我怀疑您想要 Sender
指向的对象的地址。实际上,在 Delphi 中,对象变量只是指向堆上对象的指针:
procedure TForm1.Button1Click(Sender: TObject);
var
DummyPointer: Pointer;
begin
DummyPointer := Addr(Sender);
ShowMessage(IntToStr(NativeInt(DummyPointer))); // address to the Sender variable
DummyPointer := Pointer(Sender);
ShowMessage(IntToStr(NativeInt(DummyPointer))); // address to the Sender object
ShowMessage(IntToStr(NativeInt(Sender))); // address to the Sender object
end;
不同之处在于,在 Addr(Sender)
处找到指向 Sender
对象的指针变量,而在 Pointer(Sender)
处找到对象本身。
如何将指针值转换为字符串?想象一下:
procedure TForm1.Button1Click(Sender: TObject);
var DummyPointer :Pointer;
begin
DummyPointer := Addr(Sender);
ShowMessage(IntToStr(DummyPointer)); //this is it, what I can not solve... it casts error
end;
谢谢
像这样:
procedure TForm1.Button1Click(Sender: TObject);
var
DummyPointer :TPointer;
begin
DummyPointer := Addr(Sender);
ShowMessage(IntToStr(UIntPtr(DummyPointer)));
end;
对于Delphi7,使用:
ShowMessage(IntToStr(Cardinal(DummyPointer)));
首先,你写 TPointer
,但我假设你的意思是 Pointer
。
现在,给定一个指针 P
,诀窍是将其重新解释为本机大小的整数:例如 NativeInt(P)
。 NativeInt
是与指针大小相同的有符号整数类型。
因此,编译如下:
procedure TForm1.Button1Click(Sender: TObject);
var
DummyPointer: Pointer;
begin
DummyPointer := Addr(Sender);
ShowMessage(IntToStr(NativeInt(DummyPointer)));
end;
这将显示 Sender
变量的地址。
但是,这可能不是您想要的。我怀疑您想要 Sender
指向的对象的地址。实际上,在 Delphi 中,对象变量只是指向堆上对象的指针:
procedure TForm1.Button1Click(Sender: TObject);
var
DummyPointer: Pointer;
begin
DummyPointer := Addr(Sender);
ShowMessage(IntToStr(NativeInt(DummyPointer))); // address to the Sender variable
DummyPointer := Pointer(Sender);
ShowMessage(IntToStr(NativeInt(DummyPointer))); // address to the Sender object
ShowMessage(IntToStr(NativeInt(Sender))); // address to the Sender object
end;
不同之处在于,在 Addr(Sender)
处找到指向 Sender
对象的指针变量,而在 Pointer(Sender)
处找到对象本身。