壹個枚舉型的說明列出了所有這種類型可以包括的值: type
Tdays=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);
可以定義上述枚舉類型的變量:
var
DayOfWeek:TDays;
在枚舉型中,括號中的每壹個值都有壹個由說明它的位置決定的整形值。例如Sunday有整形值0,Monday有整形值1等。您可以把DayOfWeek說明為壹個整形變量,並將壹星期的每壹天賦壹個整形值以達到相同的效果,但用枚舉型會使得程序可讀性好,編寫容易。當您在枚舉型中列出值時,您同時說明了這個值是壹個標識符。例如您的程序中如果已經含有TDays類型且說明了DayOfWeeks變量,則程序中便不能使用Monday變量,因為它已經被說明為標識符了。 子界型是下列這些類型中某範圍內的值:整形、布爾量、字符型或枚舉型。在您想限制壹個變量的取值範圍時,子界型是非常有用的。
type
Thours=0..23;
TValidLetter='A'..'F';
TDays=(Sunday,Monday,Tuesday,Wednesday,Thursday,
Friday,Saturday);{枚舉型}
TWorkDay=Monday..Friday;{壹個TDays型的子界}
子界型限定了變量的可能取值範圍。當範圍檢查打開時,(在庫單元的Implementation後面有{$R*.DFM}字樣表示範圍檢查打開,否則您可以在Options|Project|ComplierOptions中選擇RangeCheking來打開範圍檢查),如果變量取到子界以外的值,會出現壹個範圍檢查錯誤。 數組是某種數據類型的有序組合,其中每壹個元素的值由其相對位置來指定,您可以在數組的某個位置上放置數據,並在需要時使用這些數據。下面的類型說明了壹個Double型的數組變量:
var
Check:array[1..10]ofDouble;
它表示Check指向壹個含有10個Double型元素的數據串列,代表每壹個元素的是1到10之間的數字,稱為索引。數組的每壹項由數組名稱加上[]中的索引來表示。Check包含10個變量,Check[1]表示第壹個變量。您也可以把數組定義成類型:
type
TCheck=array[1..10]ofDouble;
則變量說明改為:
var
Check:TCheck;
您可以通過給數組賦值等方法來使用數組。下面的語句將0.0賦給Check數組中的所有元素:
forJ:=1to10do
Check[J]:=0.0;,
數組也可以是多維的,下面的類型定義了壹個20行、20列的數組。
type
Ttable=array[1..20,1..20]ofDouble;
var
table1:TTable;
,;,;想將這壹表格的所有數據初始化為0.0,您可以使用for循環:
var
Col,Row:Integer;
…
forCol:=1to20do
forRow:=1to20do
Table1[Col,Row]:=0.0; 字符串類型事實上是壹個壹維的字符數組。當您說明壹個字符串型的變量時,您應當指明這個字符串的大小,下面是說明字符串類型的例子:
type
MyString:string[15];
var
MyName:MyString;
則變量MyName被說明成為最多可以包含15個字符。如果您沒有說明字符串的大小,Delphi會認為字符串包含最大值255個字符。給字符串賦值可以直接使用單引號括起的字串賦值:
MyName:='Frank.Smith';
或MyName:='張明';
因為MyName是壹個可以包含15個字符的MyString型變量,上文的兩個的變量都是有效的,壹個漢字可以視作兩個字符。當您給字符串型變量賦的值多於定義數值時,例如將MyName賦為‘FrankSmith.Franklin’,則Delphi只會接受前15個字符‘FrankSmith.Fran’。在內存中,字符串通常占用比所說明的大小多壹個字節的空間,因為第壹個位置是壹個包含這個數組大小的字節。您可以使用索引值來訪問字符串的字符,MyName[1]可以得到MyName的第壹個字符'F'。
可以使用Delphi豐富的運算符、過程和函數來處理字符串型的變量和屬性。下面介紹幾個常用的運算符和Delphi過程或函數:
Concat和(+)功能相同,都可以將多個字符串組合在壹起,建立壹個較大的字符串;Copy會返回壹個字符串中的子字符串;Delete在壹個字符串中從壹個指定位置起刪除壹定數目的字符;Insert在壹個字符串中插入壹個字符串;Length返回字符串的長度;Pos返回壹個子字符串在壹個字符串中的位置,即索引值。 集合類型是壹群相同類型元素的組合,這些類型必須是有限類型如整形、布爾型、字符型、枚舉型和子界型。在檢查壹個值是否屬於壹個特定集合時,集合類型非常有用。下面的例程可以說明集合類型的用法:在窗體上加入壹個編輯框和壹個按鈕,清除編輯框中的文字,在其上加上Caption為“輸入元音”的標簽Label,並在編輯框的下方加入壹個空的標簽,將按鈕的Default屬性改為True,建立按鈕的事件處理過程如下:
procedureTForm1.Button1Click(Sender:TObject);
type
Tvowels=setofChar;
var
Vowels:TVowels;
begin
Vowels:=['a','e','i','o','u'];
ifEdit1.Text[1]inVowelsthen
Lable2.Caption:='是元音';
else
Lable2.Caption:='請再試';
end;
執行這個程序,在編輯框中輸入字母,表達式Edit1.Text[1]inVowels的結果是布爾型的,in是運算符,用來判斷字母是否存在於集合中。輸入的判別結果會顯示在編輯框的下方。以上就用到了集合類型TVowels。 記錄是您的程序可以成組訪問的壹群數據的集合。下面的例程說明了壹個記錄類型的用法:
type
TEmployee=record
Name:string[20];
YearHired:1990..2000;
Salsry:Double;
Position:string[20];
end;
記錄包含可以保存數據的域,每壹個域有壹個數據類型。上文的記錄TEmployee類型就含有四個域。您可以用以下的方式說明記錄型的變量:
var
NewEmployee,PromotedEmployee:TEmployee;
用如下的方法可以訪問記錄的單域:
NewEmployee.Salary:=1000;
編寫如下的語句可以給整個記錄賦值:
withPromotedEmployeedo
beginsfu nb
Name:='';
YearHired:=1993;
Salary:=2000.00
Position:='editor';
end;
您的程序可以將記錄當成單壹實體來操作:
PromptEmployee:=NewEmployee;
以上介紹了用戶常用的自定義類型。在Delphi的編程中,對象是非常重要的用戶自定義數據類型。象記錄壹樣,對象是結構化的數據類型,它包含數據的域(Field),也包含作為方法的過程和函數。在Delphi中,當您向窗體中加入壹個部件,也就是向窗體對象中加入了壹個域;每壹個部件也是對象,每當您建立壹個事件處理過程使得部件可以響應壹個事件時,您即自動地在窗體中加入了壹個方法。