📄 008.htm
字号:
<p><font face="宋体" lang="ZH-CN">
在枚举型中,括号中的每一个值都有一个由说明它的位置决定的整形值。例如</font>Sunday<font
face="宋体" lang="ZH-CN">有整形值</font>0<font face="宋体" lang="ZH-CN">,</font>Monday<font
face="宋体" lang="ZH-CN">有整形值</font>1<font face="宋体" lang="ZH-CN">等。您可以把</font>DayOfWeek<font
face="宋体" lang="ZH-CN">说明为一个整形变量,并将一星期的每一天赋一个整形值以达到相同的效果,但用枚举型会使得程序可读性好,编写容易。当您在枚举型中列出值时,您同时说明了这个值是一个标识符。例如您的程序中如果已经含有</font>TDays<font
face="宋体" lang="ZH-CN">类型且说明了</font>DayOfWeeks<font face="宋体"
lang="ZH-CN">变量,则程序中便不能使用</font>Monday<font face="宋体"
lang="ZH-CN">变量,因为它已经被说明为标识符了。</font> </p>
<p>2.1.9.2 <font face="宋体" lang="ZH-CN">子界类型 </p>
</font><p><font face="宋体" lang="ZH-CN">
子界型是下列这些类型中某范围内的值:整形、布尔量、字符型或枚举型。在您想限制一个变量的取值范围时,子界型是非常有用的。 </p>
</font><p>type </p>
<p>Thours = 0..23;</p>
<p>TValidLetter = 'A' .. 'F';</p>
<p>TDays = ( Sunday ,Monday,Tuesday,Wednesday,Thursday,</p>
<p>Friday,Saturday); {<font face="宋体" lang="ZH-CN">枚举型}</font></p>
<p>TWorkDay = Monday..Friday; {<font face="宋体" lang="ZH-CN">一个</font>TDays<font
face="宋体" lang="ZH-CN">型的子界} </p>
</font><p><font face="宋体" lang="ZH-CN">
子界型限定了变量的可能取值范围。当范围检查打开时,</font>(<font
face="宋体" lang="ZH-CN">在库单元的</font>Implementation<font face="宋体"
lang="ZH-CN">后面有{</font>$R*.DFM}<font face="宋体" lang="ZH-CN">字样表示范围检查打开,否则您可以在</font>Options|Project|Complier
Options<font face="宋体" lang="ZH-CN">中选择</font>Range Cheking<font face="宋体"
lang="ZH-CN">来打开范围检查</font>)<font face="宋体" lang="ZH-CN">,如果变量取到子界以外的值,会出现一个范围检查错误。 </p>
</font><p>2.1.9.3 <font face="宋体" lang="ZH-CN">数组类型 </p>
</font><p><font face="宋体" lang="ZH-CN">
数组是某种数据类型的有序组合,其中每一个元素的值由其相对位置来指定,您可以在数组的某个位置上放置数据,并在需要时使用这些数据。下面的类型说明了一个</font>Double<font
face="宋体" lang="ZH-CN">型的数组变量:</font></p>
<p>var</p>
<p>Check : array [1..10] of Double; </p>
<p><font face="宋体" lang="ZH-CN"> 它表示</font>Check<font
face="宋体" lang="ZH-CN">指向一个含有</font>10<font face="宋体" lang="ZH-CN">个</font>Double<font
face="宋体" lang="ZH-CN">型元素的数据串列,代表每一个元素的是</font>1<font
face="宋体" lang="ZH-CN">到</font>10<font face="宋体" lang="ZH-CN">之间的数字,称为索引。数组的每一项由数组名称加上</font>[]<font
face="宋体" lang="ZH-CN">中的索引来表示。</font>Check<font face="宋体"
lang="ZH-CN">包含</font>10<font face="宋体" lang="ZH-CN">个变量,</font>Check[1]<font
face="宋体" lang="ZH-CN">表示第一个变量。您也可以把数组定义成类型:</font></p>
<p>type</p>
<p>TCheck = array[1..10] of Double;</p>
<p><font face="宋体" lang="ZH-CN">则变量说明改为:</font></p>
<p>var</p>
<p>Check :TCheck; </p>
<p><font face="宋体" lang="ZH-CN">
您可以通过给数组赋值等方法来使用数组。下面的语句将</font>0.0<font
face="宋体" lang="ZH-CN">赋给</font>Check<font face="宋体" lang="ZH-CN">数组中的所有元素: </p>
</font><p>for J := 1 to 10 do</p>
<p>Check[J] := 0.0;</p>
<p><font face="宋体" lang="ZH-CN">
数组也可以是多维的,下面的类型定义了一个</font>20<font
face="宋体" lang="ZH-CN">行、</font>20<font face="宋体" lang="ZH-CN">列的数组。</font></p>
<p>type</p>
<p>Ttable = array[1..20,1..20] of Double;</p>
<p>var</p>
<p>table1:TTable; </p>
<p><font face="宋体" lang="ZH-CN">
想将这一表格的所有数据初始化为</font>0.0<font
face="宋体" lang="ZH-CN">,您可以使用</font>for<font face="宋体" lang="ZH-CN">循环: </p>
</font><p>var</p>
<p>Col,Row:Integer;</p>
<p><font face="宋体" lang="ZH-CN">…</font></p>
<p>for Col :=1 to 20 do</p>
<p>for Row := 1 to 20 do</p>
<p>Table1[Col,Row] := 0.0; </p>
<p>2.1.9.4 <font face="宋体" lang="ZH-CN">字符串类型 </p>
</font><p><font face="宋体" lang="ZH-CN">
字符串类型事实上是一个一维的字符数组。当您说明一个字符串型的变量时,您应当指明这个字符串的大小,下面是说明字符串类型的例子:</font></p>
<p>type</p>
<p>MyString: string[15];</p>
<p>var</p>
<p>MyName: MyString; </p>
<p><font face="宋体" lang="ZH-CN"> 则变量</font>MyName<font
face="宋体" lang="ZH-CN">被说明成为最多可以包含</font>15<font face="宋体"
lang="ZH-CN">个字符。如果您没有说明字符串的大小,</font>Delphi<font
face="宋体" lang="ZH-CN">会认为字符串包含最大值</font>255<font face="宋体"
lang="ZH-CN">个字符。给字符串赋值可以直接使用单引号括起的字串赋值: </p>
</font><p>MyName := 'Frank.Smith';</p>
<p><font face="宋体" lang="ZH-CN">或</font>MyName := '<font face="宋体" lang="ZH-CN">张明</font>'<font
face="宋体" lang="ZH-CN">; </p>
</font><p><font face="宋体" lang="ZH-CN">
因为</font>MyName<font face="宋体"
lang="ZH-CN">是一个可以包含</font>15<font face="宋体" lang="ZH-CN">个字符的</font>MyString<font
face="宋体" lang="ZH-CN">型变量,上文的两个的变量都是有效的,一个汉字可以视作两个字符。当您给字符串型变量赋的值多于定义数值时,例如将</font>MyName<font
face="宋体" lang="ZH-CN">赋为‘</font>FrankSmith.Franklin<font face="宋体"
lang="ZH-CN">’,则</font>Delphi<font face="宋体" lang="ZH-CN">只会接受前</font>15<font
face="宋体" lang="ZH-CN">个字符‘</font>FrankSmith.Fran<font face="宋体"
lang="ZH-CN">’。在内存中,字符串通常占用比所说明的大小多一个字节的空间,因为第一个位置是一个包含这个数组大小的字节。您可以使用索引值来访问字符串的字符,</font>MyName[1]<font
face="宋体" lang="ZH-CN">可以得到</font>MyName<font face="宋体" lang="ZH-CN">的第一个字符</font>'F'<font
face="宋体" lang="ZH-CN">。</font></p>
<p><font face="宋体" lang="ZH-CN">
您可以使用</font>Delphi<font
face="宋体" lang="ZH-CN">丰富的运算符、过程和函数来处理字符串型的变量和属性。下面介绍几个常用的运算符和</font>Delphi<font
face="宋体" lang="ZH-CN">过程或函数:</font></p>
<p> Concat<font face="宋体" lang="ZH-CN">和</font>(+)<font
face="宋体" lang="ZH-CN">功能相同,都可以将多个字符串组合在一起,建立一个较大的字符串;</font>Copy<font
face="宋体" lang="ZH-CN">会返回一个字符串中的子字符串;</font>Delete<font
face="宋体" lang="ZH-CN">在一个字符串中从一个指定位置起删除一定数目的字符;</font>Insert<font
face="宋体" lang="ZH-CN">在一个字符串中插入一个字符串;</font>Length<font
face="宋体" lang="ZH-CN">返回字符串的长度;</font>Pos<font face="宋体"
lang="ZH-CN">返回一个子字符串在一个字符串中的位置,即索引值。 </p>
</font><p>2.1.9.5 <font face="宋体" lang="ZH-CN">集合类型 </p>
</font><p><font face="宋体" lang="ZH-CN">
集合类型是一群相同类型元素的组合,这些类型必须是有限类型如整形、布尔型、字符型、枚举型和子界型。在检查一个值是否属于一个特定集合时,集合类型非常有用。下面的例程可以说明集合类型的用法:</font></p>
<p><font face="宋体" lang="ZH-CN">
在窗体上加入一个编辑框和一个按钮,清除编辑框中的文字,在其上加上</font>Caption<font
face="宋体" lang="ZH-CN">为“输入元音”的标签</font>Label<font face="宋体"
lang="ZH-CN">,并在编辑框的下方加入一个空的标签,将按钮的</font>Default<font
face="宋体" lang="ZH-CN">属性改为</font>True<font face="宋体" lang="ZH-CN">,建立按钮的事件处理过程如下: </p>
</font><p>procedure TForm1.Button1Click(Sender:TObject);</p>
<p>type</p>
<p>Tvowels=set of Char;</p>
<p>var</p>
<p>Vowels:TVowels;</p>
<p>begin</p>
<p>Vowels := ['a','e','i','o','u'];</p>
<p>if Edit1.Text[1] in Vowels then</p>
<p>Lable2.Caption := '<font face="宋体" lang="ZH-CN">是元音</font>';</p>
<p>else</p>
<p>Lable2.Caption := '<font face="宋体" lang="ZH-CN">请再试</font>';</p>
<p>end; </p>
<p><font face="宋体" lang="ZH-CN">
执行这个程序,在编辑框中输入字母,表达式</font>Edit1.Text[1]
in Vowels<font face="宋体" lang="ZH-CN">的结果是布尔型的,</font>in<font
face="宋体" lang="ZH-CN">是运算符,用来判断字母是否存在于集合中。输入的判别结果会显示在编辑框的下方。以上就用到了集合类型</font>TVowels<font
face="宋体" lang="ZH-CN">。 </p>
</font><p>2.1.9.6 <font face="宋体" lang="ZH-CN">记录类型 </p>
</font><p><font face="宋体" lang="ZH-CN">
记录是您的程序可以成组访问的一群数据的集合。下面的例程说明了一个记录类型的用法: </p>
</font><p>type</p>
<p>TEmployee=record</p>
<p>Name : string[20];</p>
<p>YearHired:1990..2000;</p>
<p>Salsry: Double;</p>
<p>Position: string[20];</p>
<p>end; </p>
<p><font face="宋体" lang="ZH-CN">
记录包含可以保存数据的域,每一个域有一个数据类型。上文的记录</font>TEmployee<font
face="宋体" lang="ZH-CN">类型就含有四个域。您可以用以下的方式说明记录型的变量: </p>
</font><p>var</p>
<p>NewEmployee,PromotedEmployee:TEmployee;</p>
<p><font face="宋体" lang="ZH-CN">
用如下的方法可以访问记录的单域:</font></p>
<p>NewEmployee.Salary := 1000;</p>
<p><font face="宋体" lang="ZH-CN">编写如下的语句可以给整个记录赋值: </p>
</font><p>with PromotedEmployee do</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -