私は大規模なDelphiコードベースを64ビットに適応させることに取り組んでいます。多くの場合、次のような32ビット値との間でポインタがキャストされる行があります。
var
p1,p2 : pointer;
begin
inc(Integer(p1),10);
p2 := Pointer(Integer(p1) + 42);
これらのキャストを見つけることができる場合は、64ビットモードで正しくするために、代わりにNativeInt-castに置き換えました。
しかし、私はそれらすべてを見つけたかどうかはわかりません。キャストがより微妙な場合もあるため、文字列「integer(」をテキスト検索するだけでは不十分です。
ポインタ値が整数型の範囲を超えると、「integer(」キャストは64ビットで失敗するため、メモリマネージャに4GBを超えるメモリを割り当てるように強制できるとしたらどうなるでしょうか(ポインタ値がより多くを使用しているため)。 32ビットよりも)?そうすると、ランタイムエラーが発生し、間違ったキャストをより簡単に見つけることができます。これは可能ですか?または、他の手法を推奨できる人はいますか?