基本-集合型

集合型

初めて使います。
どんなものが出てくるのかな? わくわくドキドキ

【特徴】

  • 集合型は、順序型の集合を格納します
  • 数学での集合を取り扱える型です。
  • 同じ値を複数登録できません。
  • 順序型の値は0~255の範囲でなければなりません。

【宣言方法1】(書籍:やさしいDelphi より)

Type
識別子 = Set of   基底型;
...
識別子 =  [要素のリスト];

 

【宣言方法2】(書籍:やさしいDelphi より)

var
変数名 = Set of 基底型;
...
変数名 =  Set of 基底型;

 

月を入れる集合型を書いてみました。超シンプルですが、せいいっぱい(^^;
Ord関数は、0から順番に値を返してくれます。1月が0月になってしまったので、i の値を+1にしてみました。
こんなんで合っているのかなぁ・・・不安。
intToStr関数は、整数型を文字列型に変換してくれます。関数のお話はもう少し先で・・・

procedure TfrmMain.btnJikkouClick(Sender: TObject);

//集合型の宣言
Type TMonth = (January, February, March, April, May);

var
  i: Integer;
begin
  i := Ord(January) + 1;
  Memo1.Lines.Add(IntToStr(i)+ '月');
  i := Ord(February) + 1;
  Memo1.Lines.Add(IntToStr(i)+ '月');
  i := Ord(March) + 1;
  Memo1.Lines.Add(IntToStr(i)+ '月');
  i := Ord(April) + 1;
  Memo1.Lines.Add(IntToStr(i)+ '月');
  i := Ord(May) + 1;
  Memo1.Lines.Add(IntToStr(i)+ '月');
end;

【実行結果】

ren10

しかし、型を覚えるだけでも大変。しんどいわぁ
この値集合には「値が含まれているか」なんてこともできるらしいです。
in演算子 というのを使います。

いろいろなところ(本やWebサイト)を参考に、自分なりに書いてみました。
ソースコードに全部メモを入れているサイトがありましたので、素晴らしいと思いました。
最高の忘備録ですものね。マネしちゃお

procedure TfrmMain.btnJikkouClick(Sender: TObject);

Type TWeek = (Mon, Tue, Wed, Thu, Fri, Sat, Sun)  ; //集合型の宣言
     TWeekset = set of TWeek;

var
  WeekSet : TWeekset;                           //TWeekSet型の変数を宣言
  i       :integer;                             //集合型は数値で返ってくるので
begin
  i := Ord(Sun) + 1;                            //Sun番目の数値を格納

  Memo1.Clear;                                  //Memo1の文字をクリア
  WeekSet := [Mon, Tue, Wed, Thu, Fri, Sat]  ;  //変数にデータを格納 Sunを抜いた

  if Sun in WeekSet then                        //[Sun]が含まれているか?
     Memo1.Lines.Add( 'お仕事です')         //含まれている
  else
     Memo1.Lines.Add( 'お休みです')           //含まれていない
  end;

【実行結果】

ren11

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です