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