Tcolor型をstr型に変換するには?

解決


悩みの種  2005-09-04 08:02:46  No: 17373

Tcolor型の16進数をテキストに変換したいのですが、そもそも16進数は整数として扱われているのでしょうか?


柿の種  2005-09-04 08:48:38  No: 17374

おもろい質問やな〜 ポリポリ
  Memo1.Lines.Add('$'+IntToHex($00ff00ff, 8));
  Memo1.Lines.Add('$'+IntToHex(clFuchsia, 8));
  Memo1.Lines.Add('$'+IntToHex(clWindow, 8));
  Memo1.Lines.Add('$'+IntToHex(clHighlightText, 8));


anone  2005-09-04 09:43:22  No: 17375

>そもそも16進数は整数として扱われているのでしょうか?

うーむ、何進数というのは数を表現する規則なのであって、整数とか実数とか
とは別の概念です。上の質問を

そもそも10進数は整数として扱われているのでしょうか?

としてみれば、そのちぐはぐさがわかるでしょう。

Delphi6 のヘルプでは

type TColor = -$7FFFFFFF-1..$7FFFFFFF;

となっています。$7FFFFFFF を16進数で表現しても10進数で表現しても
2進数で表現しても、定義の中身は同じです。


悩みの種  2005-09-04 19:42:03  No: 17376

柿の種さん、anoneさんありがとうございます。
「16進数は整数」というのは  IntToStr関数が使えるのかどうか気になったので、でも柿の種さんのサンプルを見てみると

>Memo1.Lines.Add('$'+IntToHex($00ff00ff, 8));

これは、16進数表示の整数を16進数のテキストに変換しているということなのですか?


ピピ  2005-09-04 22:01:13  No: 17377

よく「10進数を16進数に表示するには?」という質問に対して、
「それは表現がオカシイ。16進表示に表示するには、だろ?」っていうツッコミをよくみます
大概の場合、16進数っていえば文字列だ、と解釈すればよいのです。


anone  2005-09-04 22:50:13  No: 17378

> 大概の場合、16進数っていえば文字列だ、と解釈すればよいのです。

そんなことはありません。
数値をその文字列表示を混同するのは間違いのもとです。


anone  2005-09-04 22:56:44  No: 17379

> これは、16進数表示の整数を16進数のテキストに変換しているということなのですか?

そうです。数値とそれに対応する文字列とは厳密に区別してくださいね。

普通に $10 と書けばそれは数値であり、10進表示の 16 になります。

var
  i:integer;
begin
  i := $10;
  ....

というふうにできます。対応する16進表示の文字列は '$10' です。
IntToHex(i,2) は '10' を、IntToStr(i) は '16' を返します。


悩みの種  2005-09-05 04:37:19  No: 17380

柿の種さん、anoneさん、ピピさん。ありがとうございます。
あやふやだった、16進数のことがよくわかりました。


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

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






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