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より上の数字を入力しても何事もなかったかのように処理されてしまうのですが、何か足りないのでしょうか?
RGBマクロは次のように定義/実装されているので、
「255より上の数字を入力しても何事もなかったかのように処理されてしまう」
のは当然のこと。
キチンと入力値を制限したければ、そのような処理コードを追加すべし。
#define RGB(r, g ,b) ((DWORD) (((BYTE) (r) | \
((WORD) (g) << 8)) | \
(((DWORD) (BYTE) (b)) << 16)))
デフォルトは {$R-}か。
エラーを出したければ、
{$R+}
a:=strtoint(edit1.text);
b:=strtoint(edit2.text);
c:=strtoint(edit3.text);
{$R-}
そうなんです。例外として出したかったんです。
”ナニが足りないか”さんの方法でばっちりです。
ありがとうございました。
”そうね”さんのコードは・・・delphiですか?
ツイート | ![]() |