我正在努力使大型 Delphi 代码库适应 64 位。在许多情况下,有一些行将指针转换为/从 32 位值转换,类似于:
var
p1,p2 : pointer;
begin
inc(Integer(p1),10);
p2 := Pointer(Integer(p1) + 42);
在哪里可以找到这些演员表,我已将它们替换为 NativeInt-casts,以使它们在 64 位模式下正确。
但是我不确定我是否找到了所有这些。有时演员阵容更加微妙,因此仅对字符串“integer(”进行文本搜索也是不够的。
由于如果指针值高于整数类型的范围,“整数(”转换将在 64 位中失败,我有一个想法:如果我可以强制内存管理器分配高于 4gb 的内存(因此指针值使用更多比32位)?然后我会得到运行时错误,并且可以更容易地找到错误的演员表。这可能吗?或者任何人都可以推荐一些其他技术吗?