《DelPhi学习笔记6.用户自定义类型(精)》由会员分享,可在线阅读,更多相关《DelPhi学习笔记6.用户自定义类型(精)(10页珍藏版)》请在金锄头文库上搜索。
1、.word可编辑.用户自定义类型1.枚举类型的定义格式:Type类型标识符 = (标识符1,标识符2,标识符3,-,标识符m);2.格举类型的使用枚举类型属于顺序类型,枚举类型的每个元素对应一个有序的整数,其中第一个元素对应序数0.因此,枚举类型本质上是用一些枚举常量来表示一组连续的整数。但枚举常量不能直接进行算术运算,可以进行关系运算或间接的算术运算。例:TypeColor1 = (Red,Green,Blue, Yellow);【例6-1】 编写一个设置文本格式的应用程序,程序的设计界面如图6-1所示。程序运行时,在编辑框中显示的文本是“轻松学习Delphi” 。程序运行时,单击【宋体】按
2、钮,文本字体为宋体;单击【隶书】按钮,文本字体为隶书;单击【黑体】按钮,文本字体变为黑体。图6-2是单击隶书时的运行界面。要求用枚举类型实现。部份代码:implementationtype/定义枚举类型MyFont = (st,ls,ht;var/定义枚举类型变量ft : MyFont;$R *.dfmFunction ffont(fft : MyFont : String;beginCase fft ofst : ffont := 宋体;ls : ffont := Comic Sans MS;ht : ffont := 黑体;end;end;procedure TForm1.Button1C
3、lick(Sender: TObject;beginif Button1.Caption = 宋体 thenbeginft := st;Edit1.Font.Name := ffont(ft;end;end;procedure TForm1.Button2Click(Sender: TObject;beginif Button2.Caption = 隶书 thenbeginft := ls;Edit1.Font.Name := ffont(ft;end;end;procedure TForm1.Button3Click(Sender: TObject;beginif Button3.Capti
4、on = 黑体 thenbeginft := ht;Edit1.Font.Name := ffont(ft;end;end;6.1.3 集合类型的定义与使用1.集合类型的定义集合是具有相同性质但又可以区分开来的对象的全体。格式:Type类型标识符 = set of 其类型;例:TypeColors = (Red,Green,Blue,Yellow);/先定义一个枚举类型Color = set of Colors; /定义一个基类型为枚举类型的集合类型Char = set of m.q;/直接定义一个基类型为子界类型的集合类型。下面的定义是错误的:type Num_p = set of 200.
5、400; /虽然只有201一个元素,但256400这些数值超过了2552.集合类型的使用。【例6-2】 编写一个判断字符串中是否有元音字母的程序,程序的设计界面如图6-3所示。程序运行时,在【输入单词】编辑框中输入一个任意单词,然后单击【判断】按钮,将在【结果】编辑框中显示有无元音字母的文本。其中,元音字母为“a,e,i,o,u” ,程序运行界面如图6-4所示。要求用集合类型实现。6.1.4 记录类型的定义与使用1.记录类型的定义格式:type记录类型标识符 = Record字段1 : 类型1;字段2 : 类型2;。字段n : 类型n;end;2.下面定义一个住院病人的记录类型,如下所示:ty
6、pePatient = Record /说明这是记录类型p_num : Integer; /字段1是病人的住院号,为整形数据p_name : String; /字段2是病人的姓名,为字符串数据p_pay :Boolean; /字段3是病人的付款情况,为布尔型数据end;【例6-3】 编写一个程序,用来输入和显示某单位员工基本信息。程序的设计界面如图 6-5所示,程序运行时,单击【输入信息】按钮,用户可以输入员工的基本信息,包括姓名、职称和基本工资。单击【查看信息】按钮,可以显示刚刚输入的该单位员工的基本信息,如图6-6所示。implementationtypepeopleInformation
7、 = Record /定义记录类型name : String8;call : String6;wage :Integer;end;varpeople :Array 1.3 of peopleInformation;$R *.dfmprocedure TForm1.Button1Click(Sender: TObject;vark : Integer;beginfor k := 1 to 3 dobeginpeoplek.name := InputBox(员工信息,请输入第+IntToStr(k+个员工姓名,;peoplek.call := InputBox(员工信息,请输入第+IntToStr
8、(k+个员工职称,;peoplek.wage := StrToInt(InputBox(员工信息,请输入第+IntToStr(k+个员工基本工资,0;end; end;procedure TForm1.Button2Click(Sender: TObject;varm : Integer;begin/在指定位置显示Canvas.TextOut(45,25,姓 名+ +职 称+ + 基本工资;for m := 1 to 3 doCanvas.TextOut(45,25 * (m+1, peoplem.name + + peoplem.call + +IntToStr(peoplem.wage ;
9、end;【练习题目】:寻找1100之间的全部素数 编写一个寻找 1100 之间的全部素数的程序,程序的设计界面如图 6-11 所示。程序运行时,单击【寻找素数】按钮将显示1100之间的全部素数,/这个函数专门用来判断数字是否为素数function SearchPrime(num : Integer : Boolean ;vari : Integer;flag : Boolean;beginflag := true;/判断是否为素数。素数是只能由1和本身整除的。for i := 2 to num - 1 dobegin/取模可以整除的话。就不是素数if(num mod i = 0 thenbeg
10、inflag := false;break;end;end;if(flag = false thenResult := false;if(flag = true thenResult := flag;end;procedure TForm1.Button1Click(Sender: TObject;varflag : bool;i : Integer;k : Integer;begin/2也是素数Form1.Memo1.Text := 2;/从3开始找到100之间的素数for i := 3 to 100 dobeginflag := SearchPrime(i;if(flag thenForm1.Memo1.Text := Form1.Memo1.Text + + IntToStr(i ;end;end;. 专业.专注 .