TOP

Delphi_04_Delphi_Object_Pascal_基本語法_02(一)
2017-10-10 12:06:28 】 瀏覽:9597
Tags:

  這里簡單的描述Object的語法中的基本內容优乐棋牌app下载,數據類型。因為代碼是自描述的所以不廢話,直接貼代碼。

{       用戶自定義類型
1、數組
2、動態數組
3、記錄
4、集合
}

program UserDefine;

{$APPTYPE CONSOLE}

uses
  SysUtils;
{       記錄
1、記錄相當于C語言中的結構體
2、記錄類型通過 type 和 record 關鍵字來定義
3、記錄類型要在使用前定義,通常放在 var 定義之前說
4、可以定義可變記錄類型,可變記錄類型就和C語言中的unio類型類似
}
//定義一個記錄類型
type
    person = record
        name:string;
        id  :integer;
    end;

    {   定義可變記錄類型
    1、注意定義可變記錄的關鍵字 record
    2、case 注意定義的形式和語法, 其中,case后面沒有配對的關鍵字
    }
    TvariantRecord = record
        nullStr:pchar;
        intField:integer;
        case integer of
            0:(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 integer
    nA2: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] 也等于23
    writeln(nA1[0]);

    {
    1、注意下面的一段代碼與前面代碼的區別,上面 nA1與nA2引用同一段內存
    2、下面nA3和nA4指向不同的代碼。
    }
    SetLength(nA3,2);
    nA3[0] := 14;
    nA4 := copy(nA3);
    nA4[0] := 15;
    writeln(nA3[0]);

    {   多維動態數組
    1、多維動態數組和一維動態數組一樣,使用之前被必須申請空間优乐棋牌app下载,賦值和copy也會
    分配空間。
    2、多維動態數組可以分多次給各維申請空間
    }
    //單次分配一維的空間
    setlength(nA5,1);
    //單次分配全部兩維的空間
    setlength(nA6,1,1);

    //訪問記錄變量
    p1.name := 'volacanol';
    p1.id := 512;
    //記錄的直接賦值
    p2 := p1;
    //通過with語句賦值記錄的成員
    with  p3 do
    begin
        name := 'cnblogs';
        id := 100;
    end;

    // 引用可變記錄
    variRecord.nullStr := 'This is null string field.';
    variRecord.intField := 10;
    //  下面是可變記錄的可變域  
		

請關注公眾號獲取更多資料



首頁 上一頁 1 2 下一頁 尾頁 1/2/2
】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇Delphi_03_Delphi_Object_Pascal_.. 下一篇Delphi_05_Delphi_Object_Pascal_..