集合型
初めて使います。
どんなものが出てくるのかな? わくわくドキドキ
【特徴】
- 集合型は、順序型の集合を格納します
- 数学での集合を取り扱える型です。
- 同じ値を複数登録できません。
- 順序型の値は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;
【実行結果】
しかし、型を覚えるだけでも大変。しんどいわぁ
この値集合には「値が含まれているか」なんてこともできるらしいです。
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;
【実行結果】