delphi.gif (306 バイト) データの概要


Object Pascal(Delphiのプログラム言語)では、すべてのデータは宣言して使わなければなりません。

データ型はいくつかの基本型と基本型を特殊化したり、組み合わせて作った派生型に別れます。基本型にはつぎの型があります。

派生型の主なものには

があります。その他、定数ラベルについても説明します。

 


-

delphi1.gif (322 バイト) 整数型

整数型にはつぎの種類があります。

範囲 形式
Byte 0〜255 符号なし1バイト
Shortint -128〜127 符号付き1バイト
Word 0〜65535 符号なし2バイト
Smallint -32768〜32767 符号付き2バイト
Integer -2147483648〜2147483647 符号付き4バイト
Longint -2147483648〜2147483647 符号付き4バイト
Cardinal 0〜2147483647 符号なし4バイト

16進数は先頭に$を付けて表します。

X := $FFFF;

宣言の例

X: Integer;

 

-

delphi1.gif (322 バイト) 実数型

有効桁数 バイト数
Single 7-8    4
Double 15-16    8
Extended 19-20 10
Comp 19-20 8
Currency 19-20 8

Comp(計算)型は -9, 223, 372, 036, 854, 775, 808〜9, 223, 372, 036, 854, 775, 807(-2〜2- 1)の整数値だけを保持できます。
Currency 型は金額の計算に適した固定小数点データ型です。

この他、Real型というのもありますが、下位互換性のためのものなので普通使いません。

上の表で一番よく使われるのはDoubleです。

宣言の例

X: Double;

 

-

delphi1.gif (322 バイト) 文字列型

文字と文字列型にはつぎの型があります。

長さ 備考
Char 1バイト ふつうの文字
WideChar 2バイト UNICODE文字(OLEで使用される)
String メモリによる制限のみ ふつうのPascal文字列。
PChar ポインタと同じ 実体は文字配列。

Stringはふつう十分長い文字列を扱えますが、コンパイラ指令の$H-が指定されていると最大255文字までとなります。PCharはC言語互換の文字列で0(NULL)で文字列の終わりを表します。PChar自身は(C言語と同じく)ポインタなので、文字列本体はどこか別のところに保持する必要があります。

var Msg: array[0..127] of Char; // C文字列の本体
pMsg: PChar;
...

   pMsg := Msg;

String型は長さを宣言で指定することができます。

str: Stinrg[10];

 

-

delphi1.gif (322 バイト) 論理型

論理型はTrue(真)とFalse(偽)の値を取ります。

宣言の例

F: Boolean;

 

-

delphi1.gif (322 バイト) ポインタ型

ポインタ型には型付きと形無しがあります。型付きの場合はその型の前に^を付けて宣言します。ポインタのいった先の値はポインタ変数の後に^を付けて参照します。

var
   p: ^Integer;

.....
    i := p^;

形無しのポインタはC言語のvoid*に相当するものです。

var p: Pointer;

あるポインタがどこも指さないときの値はnil(C言語のNULLに相当)です。

 

-

delphi1.gif (322 バイト) 配列

配列はつぎのように宣言します。[]の中には配列の添え字の最小値と最大値をドットドット(..)で区切って記述します。

A: array[0..255] of Byte;

 

-

delphi1.gif (322 バイト) レコード型

レコード型はC言語の構造体に相当します。(共用体については「構造体と共用体」参照)

レコード型はユーザ定義型なのでvar節でなく、type節で宣言します。

type
   TheRecord = record
         name: string;
         code: Smallint;
   end;

var  data: ThRecord;

 

-

delphi1.gif (322 バイト) 集合型

集合型は集合を定義するとき使います。C言語のenumと似ています。「集合の使い方」を参照してください。

type
  TMySet = set of Char;

var
   FSet: TMySet; 
 

 

-

delphi1.gif (322 バイト) クラス

クラスはC++のclassに相当します。つまりレコード型をメソッド宣言が可能なようにし、メンバ保護(外から見える範囲)を定義できるようにしたものです。ただし、C++のclassにない特徴があります。それはC++ではこの保護規定がprivate,protected,publicしかないのに対して、Delphiではpublishedというのがあります。これは設計時にオブジェクトブラウザで編集できるかどうかを指定するものです。published属性を持つメンバはpublicでもあります。

type
   TMyClass = class
   public
        procedure Method1();
        function Func1(x: Integer): Integer;
   private
        FData: Integer;
   end;

クラスはオブジェクト指向プログラミングの基礎となるものです。クラスをよく理解しないとDelphiのプログラムは作れません。

クラスの概要も参照してください。

 

-

delphi1.gif (322 バイト) 定数

定数は値を変更できない基本型の値です。C言語では#define ...に相当します。定数はconst節で宣言します。

const
    PI = 3.14159;
    PATH: string = 'D:\Temp\Number.txt';

 

-

delphi1.gif (322 バイト) ラベル

ラベルはgoto文でジャンプする先を表す番号です。他の言語ではラベルは宣言しないで使えますが、Pascalでは宣言が必要です。(ただしgoto文はあまり使われません)

label
    100;

(Delphiでは番号でなく名前もラベルに使えます)