Delphi编译时整数转换警告?

Tru*_*ill 10 delphi type-conversion compiler-warnings delphi-xe

在Delphi XE或2006中,有没有办法在编译时检测整数类型之间的隐式转换可能会丢失数据?我意识到可以通过运行时检查来检测这一点.我希望它标记以下示例,即使"big"值为1.(我们正在考虑将int更改为bigint以用于某些数据库键,并希望确定对大型遗留代码库的影响.)

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  small: Integer;
  big: Int64;
begin
  big := 3000000000000;
  small := big;  // Detect me!

  Writeln(small);
end.
Run Code Online (Sandbox Code Playgroud)

Rud*_*uis 10

编译时不会收到任何警告或提示.在Delphi编译器并不能做到这告诉它的任何程序流分析big包含了过大的值时,它被分配给small.它默默地截断值以使其适合较小的类型.我试过Shortint,一个签名的字节大小的类型,甚至没有给出警告或提示.

并且没有办法让Delphi警告你.这会很好.也许你可以在质量控制中建议它(如果还没有建议)?

  • 它在_runtime_捕获它.获得_compile time_提示或关于精度损失或值截断的警告会很好. (5认同)
  • @daemon将为琐碎的回归添加这样的功能付出很多努力.花在编写64位编译器和修复产品中的所有缺陷上的时间更长. (3认同)
  • @David - 鲁迪是对的.价值并不重要; 隐式转换是.抱歉模棱两可. (3认同)