如何在 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 位指针截断的影响。
我想手动将指针的地址设置为存储在字符串变量中的值。我有:
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 位指针截断的影响。