程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi_03_Delphi_Object_Pascal_基本語法_01,delphiobjectpascal

Delphi_03_Delphi_Object_Pascal_基本語法_01,delphiobjectpascal

編輯:Delphi

Delphi_03_Delphi_Object_Pascal_基本語法_01,delphiobjectpascal


  這次是一個基本語法的第一部分,包括變量、變量初始化、常量、運算符、字符串等內容。

{
        本程序演示 Delphi Pascal 的基本語法
1、變量及變量的初始化
2、常量
3、運算符
3、
4、

}
program Syntax;

{$APPTYPE CONSOLE}

uses
  SysUtils,Windows,StrUtils;


{       變量
1、Delphi中變量必須在固定的地方進行定義
2、Delphi中通過關鍵字 var 來定義變量
3、語法格式為:
                var  變量名標識符列表 : 變量類型 ;
    變量名列表中的各個變量名之間用逗號隔開
4、初始化格式為
                var  變量名標識符列表 : 變量類型 = 初始化值;

5、注意三個符號的位置 冒號  等於號 和 分號
}
var
    //第一種形式的變量定義
    greetWord:string;
    //第二種形式的變量定義
    nAdd,nAddFactor:integer;

    //變量的初始化
    rad : single = 5.0 ;

    //寬字符字符串
    chinaName:WideString;
    //ansichar 類型單字節字符串
    englishName:AnsiString;

    //定義一個沒有初始化的字符串
    noInitString:string;

    //定義一個與win32兼容的字符串
    dirWideString:widestring;
    dirString:ansistring;



{       常量
1、Delphi中預定義了一部分常量
        true   Boolean 類型的true
        false  Boolean 類型的false

2、在Delphi中利用 const 關鍵字定義常量
3、語法格式為
                const  常量名標識符 : 常量的數據類型 = 初始化值。
4、初始化值必須有,常量的數據類型可以省略,Delphi會根據初始化值自動確定
    常量的數據類型,進而分配相應的內存空間。 但是對於整數型的常量,內存
    空間的分配遵循能容納初始化值的最小空間數據類型確定。
    例如:
            10 會確定為 shortint類型
5、常量還有一種常量字面值,就是和C語言中一樣的字面值,例如
    10    整數常量
    2.06  實數常量
    'Hello world' 字符串常量
    'a' 字符常量

}
const
    pi:single=3.1415926;

{       要點
1、Delphi中允許在定義變量和常量的時候使用編譯期函數來初始化變量。
2、常見的編譯期函數有:
        Sizeof()
        Ord()
        Chr()
        Trunc()
        Round()
        High()
        Low()
    這裡就不舉例啦,一般不太會用到,
}

begin
    //賦值運算符 :=
    greetWord := 'Hello, Wellcome to Delphi world!';

    //比較運算符 = 判斷是否相等
    nAdd := 10;
    nAddFactor := 1;
    if nAdd = nAddFactor then
    begin
        writeln('Equal.');
    end;

    //比較運算符  <> 不等於運算符, 如果不相等則返回TRUE
    if nAdd <> nAddFactor then
    begin
        writeln('Not Equal.');
    end;

    //邏輯運算符  and 與 ,注意Delphi中邏輯運算符的優先級要高於比較運算符
    if (1 = nAdd) and (2 <> nAddFactor )then
    begin
        writeln('The judge is ture.');
    end;

    //邏輯或   or  非 , 注意Delphi中邏輯運算符的優先級要高於比較運算符
    if (1 = nAdd) or (2 <> nAddFactor )then
    begin
        writeln('The judge is ture.');
    end;


    //邏輯非  not 非, 注意Delphi中邏輯運算符的優先級要高於比較運算符
    if not (1 = nAdd) then
    begin
        writeln('1 is not equal nAdd.');
    end;

    {       數學運算符
    1、數學運算符基本與C語言類似,但是有幾個特殊的需要說明一下
    2、mod  求模運算符
    3、div  整數除法, 得到的結果是整數
    4、/    浮點數除法,得到的結果是浮點數
    }
    writeln('整數除法 3 div 2 的結果是:');
    writeln(3 div 2);

    writeln('浮點數除法 3 / 2 的結果是:');
    writeln(3 / 2);

    writeln('求余數 3 mod 2 的結果是:');
    writeln(3 mod 2);


    {       按位運算符
    1、Delphi也提供了按位運算的運算符
    2、and  按位與
    3、or   按位或
    4、not  按位非
    5、xor  按位異或
    6、shl  按位左移
    7、shr  按位右移
    }
    writeln('2 and 5 按位與的結果是:');
    writeln(2 and 5);

    writeln('2 or 5 按位或的結果是:');
    writeln(2 or 5);

    writeln('not 2 按位非的結果是:');
    writeln(not 2);

    writeln('2 xor 5 按位異或的結果是:');
    writeln(2 xor 5);

    writeln('2 shl 5 按位左移的結果是:');
    writeln(2 shl 5);

    writeln('2 shr 5 按位右移的結果是:');
    writeln(2 shr 5);

    {       增量運算符
    1、inc 增加
    2、dec 減小
    3、有兩種形式   inc(a); 得到的結果是 a := a + 1
                    inc(a, b); 得到的結果是 a := a + b
    }
    writeln('nAdd is:');
    writeln(nAdd);
    writeln('Inc(nAdd) is:');
    Inc(nAdd);
    writeln(nAdd);
    Dec(nAdd);
    writeln('Dec(nAdd) is:');
    writeln(nAdd);

    {       數據類型
    1、整數 8位、16位、32位有符號無符號整數,64位有符號整數
    2、4位、6位、8位、10位浮點型,64位貨幣類型
    3、1字節字符、2字節字符
    4、定長字符串、變長字符串
    5、NULL結尾字符串、NULL結尾寬字符串
    6、動態兩字節字符串
    7、1字節、2字節、4字節boolean類型
    }

    //ansichar 具有標准一字節大小
    if sizeof(char)=sizeof(ansichar) then
    begin
        writeln('char and ansichar have the same size.');
    end;

    //char 具有和widechar一樣的有兩字節大小
    if sizeof(char)=sizeof(widechar) then
    begin
        writeln('char and widechar have the same size.');
    end;

    {       字符串
    1、shortstring  具有256字節長度的字符串,ansichar字符串
    2、ansistring 顧名思義就是由 ansichar 構成的字符串
    3、widestring 顧名思義就是由 widechar 構成的字符串
    4、pchar  以NULL結尾的字符串的指針,兼容C語言的char*
    5、pansichar 以NULL結尾的ansichar字符串指針
    6、pwidechar 以NULL結尾的 widechar 字符串指針
    7、默認情況下 string 定義的是 ansichar 類型
    }

    (*
    1、需要特別注意 {$H+} 和 {$H-} 編譯開關對string類型的影響
       {$H+} 則表示 string 為 ansichar
       {$H-} 則表示 string 為 shortchar
    2、數值型數據類型不做過多的介紹
    *)
    writeln(sizeof(shortstring));

    //給寬字符字符串賦值
    chinaName := '中國';

    //給單字節字符串賦值
    englishName := 'England';

    writeln(chinaName);
    writeln(englishName);

    {       ansistring的細節
    1、string定義的時候沒有分配內存
    2、賦值或者初始化後string變量就分配內存
    3、通過SetLength()函數可以申請內存
    4、可以通過索引訪問字符串
    5、string類型具有垃圾自動回收機制,當生命周期結束後,由系統自動回收
       系統分配給string的內存
    6、字符串類型支持 + 連接運算
    }
    //  下面的用法錯誤
    //noInitString[0] := 'a';
    // 但是利用下面的方法則是正確的,通過 SetLength() 函數申請內存空間。
    SetLength(noInitString,1);
    noInitString := 'a' ;

    //當進行 + 連接字符串運算時,系統會自動分配足夠的內存
    noInitString := noInitString + ' apple';
    writeln(noInitString);

    {       ansistring與 Win32 接口具有兼容性
    1、因為 ansistring 是以 NULL 結束的字符串,因此可以與Win32字符串兼容
    }
    SetLength(dirString,256);
    //SysAllocStringLen(dirWideString,256);
    //獲取windows目錄
    //GetWindowsDirectory(PWideChar(dirWideString),256);
    dirString := dirWideString;
    writeln(dirString);

    readln;
end.

 

  歡迎轉載,轉載請注明來源。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved