Delphi Tips 
-----------------------------

0089  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/08 osamu rev 1.2
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/08/14 osamu 編集
Delphi2/3.x における Cardinal 型の妙な定義

>Delphi3.1のWindows.pasの中で、
>  DWORD = Integer; と定義されていますが、
>  DWORD = Cardinal; ではないのでしょうか。
>
>また、ヘルプ及びマニュアルに
>  Cardinal 0〜2147483647 符号なし 32 ビットと書かれていますが、
>  0〜4294967295 ではないのでしょうか.。

残念ながらマニュアルの通りです。
また Cardinal 型の変数には マイナス値や 2147483647 を超える定数値を代入することは出来ませんが、「オプション」の「範囲チェックエラー」をオフにしておくと 計算の結果負数を持つことは出来ます。
例えば

var i: Cardinal;
   :
   :
  i := 10;
  i := i - 20;
  if i >= 0 then ShowMessage('Plus')
            else ShowMessage('Minus');

は Minus と表示されます。つまり Integer とほとんど変わりません。

[Delphi-ML:23120]によれば、Delphi4 ではちゃんと Cardinal=(0..2^32-1) になっているようです。
参照: [Delphi-ML:20567] [Delphi-ML:23120] <バグ> <PASCAL>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp