我想手动将Pointer的地址设置为存储在字符串变量中的值。我有:
addr : String;
ptr : Pointer;
然后:
addr:='005F5770';
如何将其分配到ptr
?
答案 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()
请注意,需要从整数到指针的类型转换。