Delphi_04_Delphi_Object_Pascal_基本语法_02
生活随笔
收集整理的這篇文章主要介紹了
Delphi_04_Delphi_Object_Pascal_基本语法_02
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這里簡單的描述Object的語法中的基本內容,數據類型。因為代碼是自描述的所以不廢話,直接貼代碼。
{ 用戶自定義類型 1、數組 2、動態數組 3、記錄 4、集合 }program UserDefine;{$APPTYPE CONSOLE}usesSysUtils; { 記錄 1、記錄相當于C語言中的結構體 2、記錄類型通過 type 和 record 關鍵字來定義 3、記錄類型要在使用前定義,通常放在 var 定義之前說 4、可以定義可變記錄類型,可變記錄類型就和C語言中的unio類型類似 } //定義一個記錄類型 typeperson = recordname:string;id :integer;end;{ 定義可變記錄類型1、注意定義可變記錄的關鍵字 record2、case 注意定義的形式和語法, 其中,case后面沒有配對的關鍵字}TvariantRecord = recordnullStr:pchar;intField:integer;case integer of0:(D:double);1:(I:integer);2:(C:char);end;{ 集合1、集合就是和代數中的集合一樣理解, 有點類似于C/C++中的枚舉2、集合可以進行求交集、并集等操作3、集合的定義通過 set 來實現4、集合最大只能容納 256 各元素5、集合只能用在序數類型定義,字符串、實數等不能定義}TCharSet = set of ansichar;TWeekSet = set of 0..7 ; //定義星期的集合//TSingleset = set of single; 這個定義要注意var{ 數組1、數組的下標可以不必從默認的 0 開始,可以從其他數值開始2、通過 Low 和 High 函數可以求出不從0開始的數組下標的下界和上界3、多維數組的定義通過逗號在數組定義的 [一維長度,二維長度,...]}//定義一個數組數組相當于C語言中的 int nArray[8]//下表從 0 開始,到7 結束nArray:array[0..7] of integer;//定義一個數組 相當于C語言中的 char chArray[8]//下表從 1 開始,到 8 結束chArray:array[1..8] of ansichar;//定義一個3元素的數組fArray:array[10..12] of real;//定義一個多維數組nMatrix:array[1..2,1..2] of integer;{ 動態數組1、動態數組是在編譯期間不能確定維數的數組,需要在運行時確定維數的數組2、動態數組在使用前必須先分配內存空間3、注意在兩個不同行定義的動態數組的類型不一樣,如下所示4、多維動態數組}nDynamicArray:array of integer;//下面兩個動態數組類型一樣nA1,nA2:array of integer;{ 下面兩個動態數組類型不一樣nA1:array of integernA2:array of inter}nA3,nA4:array of integer;nA5:array of array of integer;nA6:array of array of integer;//定義一個record類型變量,注意這里不需要關鍵字record p1:person;p2:person;p3:person;{ 可變記錄1、可變記錄的聲明和定義與其他變量的定義一樣}variRecord:TvariantRecord;{ 集合變量1、集合的定義與其他數據類型一致2、集合變量的賦值和初始化必須使用 [ ], 集合成員之間用逗號隔開}charSet:TCharSet = ['a','b'];charSet_1 : TCharSet = ['b','c','d'];weekSet:TWeekSet = [0];begin//引用nArray[0]:= 10;{ 引用chArray[0] 錯誤,因為下標從1開始chArray[0] := 'a';}//通過函數 Low 和 High 返回下界和上界nArray[1]:=Low(fArray);//注意數組的上界nArray[7]:=High(fArray);//訪問二維數組中的元素,注意Delphi中多維數組訪問元素的與C語言中的差別nMatrix[1,1] := 1;nMatrix[1,2] := 2;nMatrix[2,1] := 3;nMatrix[2,2] := 4;{ 訪問動態數組1、首先必須申請內存2、然后就可以和靜態數組一樣訪問,此時的數組下標從0開始,需要注意3、動態數組是生存期管理類型,即超過生存期后,就由系統自動回收4、可以通過將動態數組賦值為 nil 就可以提前回收內存。5、動態數組時引用類型,有點類似于ansistring}SetLength(nDynamicArray,30);nDynamicArray[0]:= 10;writeln(Low(nDynamicArray));Writeln(High(nDynamicArray));//手動回收內存nDynamicArray := nil;//nDynamicArray[0]:= 10; //因為訪問錯誤的內存,因此會提前退出程序運行SetLength(nA1,2);nA2 := nA1;nA1[0] := 10;nA2[0] := 23;//因為nA2是nA1的引用,所以 nA1[0] 也等于23writeln(nA1[0]);{1、注意下面的一段代碼與前面代碼的區別,上面 nA1與nA2引用同一段內存2、下面nA3和nA4指向不同的代碼。}SetLength(nA3,2);nA3[0] := 14;nA4 := copy(nA3);nA4[0] := 15;writeln(nA3[0]);{ 多維動態數組1、多維動態數組和一維動態數組一樣,使用之前被必須申請空間,賦值和copy也會分配空間。2、多維動態數組可以分多次給各維申請空間}//單次分配一維的空間setlength(nA5,1);//單次分配全部兩維的空間setlength(nA6,1,1);//訪問記錄變量p1.name := 'volacanol';p1.id := 512;//記錄的直接賦值p2 := p1;//通過with語句賦值記錄的成員with p3 dobeginname := 'cnblogs';id := 100;end;// 引用可變記錄variRecord.nullStr := 'This is null string field.';variRecord.intField := 10;// 下面是可變記錄的可變域,是double類型variRecord.D := 10.0 ;writeln(variRecord.D);// 下面是可變記錄的可變域,是integer類型variRecord.I := 5;writeln(variRecord.I);// 下面是可變記錄的可變域,是char 類型varirecord.C := 'a';writeln(variRecord.c);// 用 with 語句來初始化可變記錄的域,這個與with variRecord dobeginnullStr :='This is null string field.';intField := 19;d := 13.0 ;i := 6 ;c := 'b';end;writeln(variRecord.D); // 輸出為13.0 為巧合writeln(variRecord.I); // 輸出為 98 是因為 b ascii 碼值 == 98writeln(variRecord.c); // 最后輸出為 b 才是正確的{ 集合的操作1、判斷元素是否在集合里面, 通過關鍵字 in 來實現2、集合的并集3、集合的交集4、往集合中增加元素5、從集合中刪除元素}//判斷元素是否在集合里面if 'a' in charSet thenbeginwriteln('a is in charSet');end;// 集合的并集if 'b' in (charSet + charSet_1 ) thenbeginwriteln('b is in charSet + charSet_1');end;// 集合的交集if 'd' in (charSet * charSet_1 ) thenbeginwriteln('d is in charSet * charSet_1');end;//通過 Include 和 Exclude 函數或者 + - 運算符增刪結合中的元素//注意集合元素必須用 [ ]charSet := charSet + ['y'];if 'y' in charSet thenbeginwriteln('y is in charSet.');end;// 通過 Include 函數增加集合元素, 注意 include 函數中集合元素// 不需要 [ ] 來表示。Include(charSet,'x');if 'x' in charSet thenbeginwriteln('x is in charSet.');end;//通過Exclude刪除集合元素Exclude(charSet,'x');if not ('x' in charSet) thenbeginwriteln('after exclude x is not in charSet');end;readln; end.?
歡迎轉載,轉載請注明來源。
?
轉載于:https://www.cnblogs.com/volcanol/p/5324449.html
總結
以上是生活随笔為你收集整理的Delphi_04_Delphi_Object_Pascal_基本语法_02的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVN工具的使用 和在Eclipse中安
- 下一篇: Cassandra 2016/00