部分範囲型なんですが

解決


message  2007-01-22 20:10:34  No: 24549

var
  a,b,c:0..255;
  d:Tcolor;

begin
  a:=strtoint(edit1.text);
  b:=strtoint(edit2.text);
  c:=strtoint(edit3.text);

  d:=RGB(a,b,c);

  Form1.color:=d;
end;

3つの値を入力してRGBに対応させようとしています。
これで255より上の数字を入力しても何事もなかったかのように処理されてしまうのですが、何か足りないのでしょうか?


そうね  2007-01-22 23:51:54  No: 24550

RGBマクロは次のように定義/実装されているので、
「255より上の数字を入力しても何事もなかったかのように処理されてしまう」
のは当然のこと。
キチンと入力値を制限したければ、そのような処理コードを追加すべし。

#define RGB(r, g ,b)  ((DWORD) (((BYTE) (r) | \  
    ((WORD) (g) << 8)) | \ 
    (((DWORD) (BYTE) (b)) << 16)))


ナニが足りないか  2007-01-23 00:21:59  No: 24551

デフォルトは {$R-}か。
エラーを出したければ、

{$R+}
  a:=strtoint(edit1.text);
  b:=strtoint(edit2.text);
  c:=strtoint(edit3.text);
{$R-}


message  2007-01-23 01:07:56  No: 24552

そうなんです。例外として出したかったんです。
”ナニが足りないか”さんの方法でばっちりです。
ありがとうございました。
”そうね”さんのコードは・・・delphiですか?


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

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






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