我在我的项目中使用此代码:
var
P: TPoint;
MyControl.Perform(WM_LBUTTONDOWN, 0, Longint(PointToSmallPoint(P)));
编译器给了我一个警告:
[Warning]: Unsafe typecast of 'TSmallPoint' to 'Integer'
但是,在Controls.pas
没有任何警告的情况下使用相同的代码- 例如在TControl.BeginDrag
方法中:
....
Perform(WM_LBUTTONUP, 0, Longint(PointToSmallPoint(P)));
我没有看到任何{$warnings off}
单位Controls.pas
。
为什么编译器警告我,但跳过警告Controls.pas
?
这段代码不安全吗?
编辑:在我的项目选项 -> 编译器消息 -> 不安全类型转换中选中(默认情况下未选中)。
也许这就是@David 和@Ken 无法重现警告的原因。