第一講內容:
1、注釋
Delphi注釋分為三種:
1.1: //this is my code.--- 單行注釋。
1.2: (* this is my code *)-----這種方式在歐洲使用較廣 ,因為歐洲的鍵盤缺少大括弧。
1.3:{this is my code}---段落注釋
2、使用大寫字母Delphi語言的大小寫不區分)
Pascal 編譯器(不象其他語言的編譯器)不考慮字元的大小寫,因此標識符Myname、 MyName、 myname、 myName、 和MYNAME是完全相同的。總體上來說,這是Pascal的一大優點,因為在大小寫敏感的語言中,許多語法錯誤是由不正確的大寫引起的。:寫使用的一致性不是編譯器強制要求的,但是保持大寫使用的一致性是值得提倡的好習慣。一個常用的方法是將每個標識符的第一個字母大寫,標識符若由幾個片語合而成(中間不能插入空格),每個詞的第一個字母應寫:MyLongIdentifier,MyVeryLongAndAlmostStupidIdentifier
關於代碼編寫風格的最後一條建議是:盡量使用空白最佳化版面。這一條很容易做到,只需要在寫複合句時,以上一句為參照,下一句向右縮排兩個空格,複合句內嵌的複合句縮排四個空格,依此類推。例如:
if ... then
statement;
if ... then
begin
statement1;
statement2;
end;
if ... then
begin
if ... then
statement1;
statement2;
end;
3、關鍵字
關鍵字是Object Pascal 的保留標識符,在語言中有著特殊含義。保留字不能用作標識符,指令字也同樣不應該用作標識符,即使編譯器允許也最好不用。在實際中你不應該把任何關鍵字用作標識符。
| 關鍵字 |
作用 |
| absolute |
指令 (變數) |
| abstract |
指令 (方法) |
| and |
運算子 (布爾) |
| array |
類型 |
| as |
運算子 (RTTI) |
| asm |
語句 |
| assembler |
向後相容 (彙編) |
| at |
語句 (異常處理) |
| automated |
訪問類別符 (類) |
| begin |
塊標記 |
| case |
語句 |
| cdecl |
函數調用協定 |
| class |
類型 |
| const |
聲明或指令(參數) |
| constructor |
特殊方法 |
| contains |
運算子 (集合) |
| default |
指令 (屬性) |
| destructor |
特殊方法 |
| dispid |
dispinterface 介面類別符 |
| dispinterface |
類型 |
| div |
運算子 |
| do |
語句 |
| downto |
語句 (for) |
| dynamic |
指令 (方法) |
| else |
語句 (if 或 case) |
| end |
塊標記 |
| except |
語句 (異常處理) |
| export |
向後相容 (類) |
| exports |
聲明 |
| external |
指令 (函數) |
| far |
向後相容 (類) |
| file |
類型 |
| finalization |
單元結構 |
| finally |
語句 (異常處理) |
| for |
語句 |
| forward |
函數指令 |
| function |
聲明 |
| goto |
語句 |
| if |
語句 |
| implementation |
單元結構 |
| implements |
指令 (屬性) |
| in |
運算子 (集合) - 工程結構 |
| index |
指令 (dipinterface介面) |
| inherited |
語句 |
| initialization |
單元結構 |
| inline |
向後相容 (見 asm) |
| interface |
類型 |
| is |
運算子 (RTTI) |
| label |
聲明 |
| library |
程式結構 |
| message |
指令 (方法) |
| mod |
運算子 (數學) |
| name |
指令 (函數) |
| near |
向後相容 (類) |
| nil |
數值 |
| nodefault |
指令 (屬性) |
| not |
運算子 (布爾) |
| object |
向後相容 (類) |
| of |
語句 (case) |
| on |
語句 (異常處理) |
| or |
運算子 (布爾) |
| out |
指令 (參數) |
| overload |
函數指令 |
| override |
函數指令 |
| package |
程式結構 (控制項包) |
| packed |
指令 (記錄) |
| pascal |
函數調用協定 |
| private |
訪問類別符 (class) |
| procedure |
聲明 |
| program |
程式結構 |
| property |
聲明 |
| protected |
訪問類別符 (類) |
| public |
訪問類別符 (類) |
| published |
訪問類別符 (類) |
| raise |
語句 (異常處理) |
| read |
屬性類別符 |
| readonly |
dispatch 介面類別符 |
| record |
類型 |
| register |
函數調用協定 |
| reintroduce |
函數指令 |
| repeat |
語句 |
| requires |
程式結構 (控制項包) |
| resident |
指令 (函數) |
| resourcestring |
類型 |
| safecall |
函數調用協定 |
| set |
類型 |
| shl |
運算子 (數學) |
| shr |
運算子 (數學) |
| stdcall |
函數調用協定 |
| stored |
指令 (屬性) |
| string |
類型 |
| then |
語句 (if) |
| threadvar |
聲明 |
| to |
語句 (for) |
| try |
語句 (異常處理) |
| type |
聲明 |
| unit |
單元結構 |
| until |
語句 |
| uses |
單元結構 |
| var |
聲明 |
| virtual |
指令 (方法) |
| while |
語句 |
| with |
語句 |
| write |
屬性類別符 |
| writeonly |
dispatch 介面類別符 |
| xor |
運算子 (布爾) |
4、運算式和運算子
建立運算式沒有通用的方法,因為要取決於所用的運算子,Pascal包括有邏輯運算子、算術運算子、布林運算子、關係運算子和集合運算子等等。
運算式可用於確定賦給一個變數的值、計算函數或過程的參數、或者判斷一個條件,運算式也可以包含函數調用。運算式是對一個標識符的值而不是標識符本身進行運算。
運算子及其優先順序
所有程式設計語言中的運算式都是常量、變數、數值、運算子和函數值的合法組合。運算式可以傳遞給過程或函數的值參,但不能傳遞給過程或函數中的引用參數。
如果你以前寫過程式,那麼你已經知道運算式是什麼了。這裡我專門講一下Pascal 運算子的特殊部分:運算子的優先順序。表2.2中按優先順序分組列出了Pascal語言的運算子。
與大多數程式設計語言相反,Pascal語言中and和or運算子的優先順序比關係運算子高。因此,如果你的代碼為a < b and c < d,編譯器首先會編譯and運算子,由此導致編譯出錯。為此你應該把每個 < 運算式用小括弧括起來: (a < b) and (c < d)。
同一種運算子用於不同資料類型時它的作用不同。例如,運算子 + 可以計算兩個數位和、串連兩個字串、求兩個集合的並集、甚至給PChar 指標加一個位移量。然而,你不能象在C語言中那樣將兩個字元相加。
另一個特殊的運算子是 div。在Pascal 中,你能用 / 計算兩個數字(實數或整數)的商,而且你總能得到一個實型結果。如果計算兩個整數的商並想要一個整型結果,那麼就需要用 div 運算子。
| 單目運算子 (最高優先順序) |
| @ |
取變數或函數的地址(返回一個指標) |
| not |
邏輯取反或按位取反 |
| 乘除及按位元運算符 |
| * |
相乘或集合交集 |
| / |
浮點相除 |
| div |
整數相除 |
| mod |
模數 (整數相除的餘數) |
| as |
程式運行階段類型轉換 (RTTI運算子) |
| and |
邏輯或按位求和 |
| shl |
按位左移 |
| shr |
按位右移 |
| 加減運算子 |
| + |
相加、集合并集、字串串連或指標增加一個位移量 |
| - |
相減、集合差集或指標減少一個位移量 |
| or |
邏輯或按位或運算 |
| xor |
邏輯或按位異或運算 |
| 關係及比較子(最低優先順序) |
| = |
判斷是否相等 |
| <> |
判斷是否不相等 |
| < |
判斷是否小於 |
| > |
判斷是否大於 |
| <= |
判斷是否小於或等於,或是否是一個集合的子集 |
| >= |
判斷是否大於或等於,或是否是一個集合的父集 |
| in |
判斷是否是集合成員 |
| is |
判斷對象是否類型相容 (又一個RTTI運算子) |
5、集合運算子
集合運算子包括並(+)、差(-)、交(*)、成員檢測(in),及一些關係運算子。要把一個元素添加到集合中,你可以採用集合并運算。下面是一個選擇字型的Delphi 例子:
Style := Style + [fsBold];Style := Style + [fsBold, fsItalic] - [fsUnderline];
另一種方法是利用標準流程Include 和Exclude,它們效率更高(但不能用於控制項的集合類型屬性,因為只能操縱一個元素):
Include (Style, fsBold);