いつもお世話になります。
D2007で作成したアプリを XE2 で再コンパイルしているのですが、
入力文字の制限をしている箇所で警告が出力されます。
実用上特に問題はなさそうなのですが、今後の事を考えて正しい
記述に修正したいのですが、よくわかりりません。
よろしくお願いいたします。
以下、ソースコードおよび警告メッセージです。
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key = chr($d)) then Edit2.SetFocus;
// 数値およびバックスペースのみ受け付ける
if not (Key in ['0'..'9',Chr(VK_BACK)]) then Key := #0;
end;
[DCC 警告] Unit1.pas(xxxx): W1050 set式で WideChar がバイト char に縮小されました。'SysUtils' ユニットの 'CharInSet' 関数で使用することを検討してください。
こんにちは.Mr.XRAYです.
こんなところでしょうか.
Delphi Unicodeワールド パートIII: コードをUnicode対応にする
http://edn.embarcadero.com/jp/article/38699
if not (CharInSet(Key, ['0'..'9', Chr(VK_BACK)])) then Key := #0;
ついでに,こんなのも.(えっ? くどい,しつこいですか? スミマセンね)
[Delphi のオンラインヘルプ等]
http://mrxray.on.coocan.jp/Delphi/Others/A_Delphi_OnlieHelphtm.html
[Delphi の製品情報]
http://mrxray.on.coocan.jp/Delphi/Others/Delphi_ProductInfo.htm
ありがとうございました。
以下のコードに修正し、警告は出力されなくなりました。
if not (CharInSet(Key, ['0'..'9',Chr(VK_BACK)])) then Key := #0;
今後ともよろしくお願いいたします。
ツイート | ![]() |