Вы ничего не пропустили. В продукте нет ничего, что могло бы вам помочь.
Я тоже нахожу это немного разочаровывающим, но я полностью ожидаю, что дизайнеры Emba подумали об этом. Я могу только заключить, что их опыт заключался в том, что добавление таких предупреждений приводило к большему количеству шума, чем сигнала. Компилятор Delphi никогда не предупреждал при назначении несовместимых целочисленных типов. Например, никогда не было предупреждением или ошибкой присваивать байту целое число.
Пора запустить grep и искать Integer\(.*\)
, Longint\(.*\)
, Cardinal\(.*\)
, Longword\(.*\)
, THandle
и т. Д.
Чтобы ответить на комментарий и ответ Арно, я предлагаю следующий код, который компилируется без предупреждений и ошибок при нацеливании на 64-битную версию.
procedure NaughtyCode;
var
Handle: THandle;
int: Integer;
card: Cardinal;
P: Pointer;
begin
Handle := high(Handle);
int := Handle;
card := Handle;
P := Pointer(Handle);
int := Integer(P);
card := Cardinal(P);
end;