如何在Delphi中手动设置Pointer的地址

时间:2016-10-25 13:32:05

标签: windows delphi pointers delphi-xe7

我想手动将Pointer的地址设置为存储在字符串变量中的值。我有:

addr : String;
ptr  : Pointer;

然后:

addr:='005F5770';

如何将其分配到ptr

2 个答案:

答案 0 :(得分:7)

像这样:

ptr := Pointer($005F5770);

您不需要字符串变量,因为地址是在编译时已知的文字。

实际上,您可以将此值设为常量,因为在编译时已知该值:

const
  ptr = Pointer($005F5770);

当然,如果值不是一个文字并且确实以十六进制表示形式开始生活,那么首先需要转换为整数:

ptr := Pointer(StrToUInt64('$' + S));

将其转换为UInt64,以便在编译为64位时,您的代码不受32位指针截断的影响。

答案 1 :(得分:3)

使用$0x添加字符串十六进制数字并使用标准StrToInt()

ptr := Pointer(StrToInt('$'+addr));

如果指针值很大并且以64位编译器为目标,请考虑使用StrToInt64()

请注意,需要从整数到指针的类型转换。