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

How to manually set adress of Pointer in Delphi

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

addr : String;
ptr  : Pointer;

然后:

addr:='005F5770';

如何分配给ptr

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

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

如果您的指针值很大并且针对 64 位编译器,请考虑使用 StrToInt64()


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

像这样:

ptr := Pointer([=10=]5F5770);

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

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

const
  ptr = Pointer([=11=]5F5770);

当然,如果该值不是文字并且确实以十六进制表示的字符串开始使用,那么您首先需要转换为整数:

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

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