部分範囲型なんですが

解決


message  2007-01-22 11:10:34  No: 24549  IP: 192.*.*.*

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 14:51:54  No: 24550  IP: 192.*.*.*

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

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

編集 削除
ナニが足りないか  2007-01-22 15:21:59  No: 24551  IP: 192.*.*.*

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

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

編集 削除
message  2007-01-22 16:07:56  No: 24552  IP: 192.*.*.*

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

編集 削除