私は自分のプロジェクトでこのコードを使用しています:
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が警告を再現できなかった理由です。