Я работаю над тем, чтобы адаптировать большую базу кода Delphi к 64-битным. Во многих случаях существуют строки, в которых указатели накладываются на/из 32-битных значений, подобных этому:
var
p1,p2 : pointer;
begin
inc(Integer(p1),10);
p2 := Pointer(Integer(p1) + 42);
Где я могу найти эти приведения, я заменил их с помощью NativeInt-casts, чтобы сделать их правильными в 64-битном режиме.
Однако я не уверен, что нашел их всех. Иногда приведения более тонкие, поэтому просто поиск текста для строки "integer" ( "тоже недостаточно".
Так как "integer" ("casts failed in 64-bit, если значение указателя превышает диапазон целочисленного типа, у меня есть идея: что, если я могу заставить диспетчер памяти выделить память выше 4gb (так что значения указателя используют более 32 бит)? Тогда я получаю ошибки во время выполнения и может с легкостью находить ошибки, которые являются неправильными. Это возможно? Или кто-нибудь может порекомендовать какую-то другую технику?