2.1.9 定義新的數(shù)據(jù)類型
Object Pascal有一些系統(tǒng)預(yù)定義的數(shù)據(jù)類型,在2.1.2中已經(jīng)對(duì)它們作了介紹。您可以利用這些數(shù)據(jù)類型以建立新的數(shù)據(jù)類型來滿足程序的特定需要。下面簡(jiǎn)單地?cái)⑹隽四芙⒌闹饕獢?shù)據(jù)類型,如枚舉型、子界型、數(shù)組型、集合型、記錄型、對(duì)象型等。
2.1.9.1 枚舉類型
一個(gè)枚舉型的說明列出了所有這種類型可以包括的值:
type
Tdays=( Sunday ,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);
可以定義上述枚舉類型的變量:
var
DayOfWeek:TDays;
在枚舉型中,括號(hào)中的每一個(gè)值都有一個(gè)由說明它的位置決定的整形值。例如Sunday有整形值0,Monday有整形值1等。您可以把DayOfWeek說明為一個(gè)整形變量,并將一星期的每一天賦一個(gè)整形值以達(dá)到相同的效果,但用枚舉型會(huì)使得程序可讀性好,編寫容易。當(dāng)您在枚舉型中列出值時(shí),您同時(shí)說明了這個(gè)值是一個(gè)標(biāo)識(shí)符。例如您的程序中如果已經(jīng)含有TDays類型且說明了DayOfWeeks變量,則程序中便不能使用Monday變量,因?yàn)樗呀?jīng)被說明為標(biāo)識(shí)符了。
2.1.9.2 子界類型
子界型是下列這些類型中某范圍內(nèi)的值:整形、布爾量、字符型或枚舉型。在您想限制一個(gè)變量的取值范圍時(shí),子界型是非常有用的。
type
Thours = 0..23;
TValidLetter = 'A' .. 'F';
TDays = ( Sunday ,Monday,Tuesday,Wednesday,Thursday,
Friday,Saturday); {枚舉型}
TWorkDay = Monday..Friday; {一個(gè)TDays型的子界}
子界型限定了變量的可能取值范圍。當(dāng)范圍檢查打開時(shí),(在庫(kù)單元的Implementation后面有{$R*.DFM}字樣表示范圍檢查打開,否則您可以在Options|Project|Complier Options中選擇Range Cheking來打開范圍檢查),如果變量取到子界以外的值,會(huì)出現(xiàn)一個(gè)范圍檢查錯(cuò)誤。
2.1.9.3 數(shù)組類型
數(shù)組是某種數(shù)據(jù)類型的有序組合,其中每一個(gè)元素的值由其相對(duì)位置來指定,您可以在數(shù)組的某個(gè)位置上放置數(shù)據(jù),并在需要時(shí)使用這些數(shù)據(jù)。下面的類型說明了一個(gè)Double型的數(shù)組變量:
var
Check : array [1..10] of Double;
它表示Check指向一個(gè)含有10個(gè)Double型元素的數(shù)據(jù)串列,代表每一個(gè)元素的是1到10之間的數(shù)字,稱為索引。數(shù)組的每一項(xiàng)由數(shù)組名稱加上[]中的索引來表示。Check包含10個(gè)變量,Check[1]表示第一個(gè)變量。您也可以把數(shù)組定義成類型:
type
TCheck = array[1..10] of Double;
則變量說明改為:
var
Check :TCheck;
您可以通過給數(shù)組賦值等方法來使用數(shù)組。下面的語(yǔ)句將0.0賦給Check數(shù)組中的所有元素:
for J := 1 to 10 do
Check[J] := 0.0;
數(shù)組也可以是多維的,下面的類型定義了一個(gè)20行、20列的數(shù)組。
type
Ttable = array[1..20,1..20] of Double;
var
table1:TTable;
想將這一表格的所有數(shù)據(jù)初始化為0.0,您可以使用for循環(huán):
var
Col,Row:Integer;
…
for Col :=1 to 20 do
for Row := 1 to 20 do
Table1[Col,Row] := 0.0;
2.1.9.4 字符串類型
字符串類型事實(shí)上是一個(gè)一維的字符數(shù)組。當(dāng)您說明一個(gè)字符串型的變量時(shí),您應(yīng)當(dāng)指明這個(gè)字符串的大小,下面是說明字符串類型的例子:
type
MyString: string[15];
var
MyName: MyString;
則變量MyName被說明成為最多可以包含15個(gè)字符。如果您沒有說明字符串的大小,Delphi會(huì)認(rèn)為字符串包含最大值255個(gè)字符。給字符串賦值可以直接使用單引號(hào)括起的字串賦值:
MyName := 'Frank.Smith';
或MyName := '張明';
因?yàn)镸yName是一個(gè)可以包含15個(gè)字符的MyString型變量,上文的兩個(gè)的變量都是有效的,一個(gè)漢字可以視作兩個(gè)字符。當(dāng)您給字符串型變量賦的值多于定義數(shù)值時(shí),例如將MyName賦為‘FrankSmith.Franklin’,則Delphi只會(huì)接受前15個(gè)字符‘FrankSmith.Fran’。在內(nèi)存中,字符串通常占用比所說明的大小多一個(gè)字節(jié)的空間,因?yàn)榈谝粋(gè)位置是一個(gè)包含這個(gè)數(shù)組大小的字節(jié)。您可以使用索引值來訪問字符串的字符,MyName[1]可以得到MyName的第一個(gè)字符'F'。
您可以使用Delphi豐富的運(yùn)算符、過程和函數(shù)來處理字符串型的變量和屬性。下面介紹幾個(gè)常用的運(yùn)算符和Delphi過程或函數(shù):
Concat和(+)功能相同,都可以將多個(gè)字符串組合在一起,建立一個(gè)較大的字符串;Copy會(huì)返回一個(gè)字符串中的子字符串;Delete在一個(gè)字符串中從一個(gè)指定位置起刪除一定數(shù)目的字符;Insert在一個(gè)字符串中插入一個(gè)字符串;Length返回字符串的長(zhǎng)度;Pos返回一個(gè)子字符串在一個(gè)字符串中的位置,即索引值。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |