Editで入力文字を制限するには

解決


めるめる  2012-04-17 05:16:23  No: 41968

いつもお世話になります。

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  2012-04-17 06:26:02  No: 41969

こんにちは.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;


Mr.XRAY  2012-04-17 06:40:16  No: 41970

ついでに,こんなのも.(えっ?  くどい,しつこいですか?  スミマセンね)

[Delphi のオンラインヘルプ等]
http://mrxray.on.coocan.jp/Delphi/Others/A_Delphi_OnlieHelphtm.html

[Delphi の製品情報]
http://mrxray.on.coocan.jp/Delphi/Others/Delphi_ProductInfo.htm


めるめる  2012-04-17 18:17:02  No: 41971

ありがとうございました。
以下のコードに修正し、警告は出力されなくなりました。

if not (CharInSet(Key, ['0'..'9',Chr(VK_BACK)])) then Key := #0;

今後ともよろしくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加