1,在Pascal中,註釋括在大括號中或帶星號的圓括號中。Delphi 也認可C++ 風格的註釋,
即把註釋放在雙斜線後。例如
{this is a comment}
(* this is another comment *)
// this is a comment up to the end of the line
2,Pascal 編譯器(不象其他語言的編譯器)不考慮字符的大小寫,
因此標識符Myname、 MyName、 myname、 myName、
和MYNAME是完全相同的
3,使用代碼模板
Delphi 3 中增加了用於代碼編輯的新功能“代碼模板”。
由於寫Pascal 語句時,常常會重複鍵入相同的一組關鍵字,
爲此Borland 公司開發了名爲“代碼模板”的新功能,代碼模板中
存放了能與代碼縮略形式對應的完整代碼,你輸入縮略代碼,
然後按Ctrl+J,完整的代碼就出現了。
例如,你輸入arrayd,然後按Ctrl+J,Delphi 編輯器會把你的
文本擴展爲:
array [0..] of ;
由於同一種代碼結構在預定義的代碼模板中通常有多種樣式,
所以模板中的縮略形式一般加有一個後綴字母,以便你選用。
此外,你也可以只輸入縮略形式的頭幾個字母,
如你輸ar,然後按Ctrl+J,那麼,編輯器中會彈出一個菜單,
菜單中列出了代碼縮略形式選項,見圖2.2所示。
代碼模板可以定製,就是你可以修改已有的模板也可以添加自己常用
的代碼段。用代碼模板輸入的代碼文本中通常會出現‘|’字符,
它表示輸入模板代碼後光標應跳到的位置,就是說你應該從
這個光標位置開始輸入,寫完這句代碼。
4,
關鍵字
關鍵字是Object Pascal 的保留標識符,在語言中有着特殊含義。
保留字不能用作標識符,指令字也同樣不應該用作標識符,
即使編譯器允許也最好不用。在實際中你不應該把任何關鍵字
用作標識符。
表2.1是面向對象 Pascal 語言(Delphi 4)中特殊標識符的完整列表,
其中包括關鍵字及保留字。
表2.1:面向對象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 | 運算符 (布爾) |
運算符及其優先級
如果你以前寫過程序,那麼你已經知道表達式是什麼了。
這裏我專門講一下Pascal 運算符的特殊部分:運算符的優先級。
表2.2中按優先級分組列出了Pascal語言的運算符。
與大多數編程語言相反,Pascal語言中and和or運算符的優先級比
關係運算符高。因此,如果你的代碼爲a < b and c < d,編譯器
首先會編譯and運算符,由此導致編譯出錯。爲此你應該把每個
< 表達式用小括號括起來: (a < b) and (c < d)。
同一種運算符用於不同數據類型時它的作用不同。例如,運算符 +
可以計算兩個數字的和、連接兩個字符串、求兩個集合的並集、甚至
給PChar 指針加一個偏移量。然而,你不能象在C語言中那樣將兩個
字符相加。
另一個特殊的運算符是 div。在Pascal 中,你能用 / 計算兩個數字
(實數或整數)的商,而且你總能得到一個實型結果。如果計算兩個
整數的商並想要一個整型結果,那麼就需要用 div 運算符。
表 2.2: Pascal語言中的運算符及其優先級
單目運算符 (最高優先級) | |
---|---|
@ | 取變量或函數的地址(返回一個指針) |
not | 邏輯取反或按位取反 |
乘除及按位運算符 | |
* | 相乘或集合交集 |
/ | 浮點相除 |
div | 整數相除 |
mod | 取模 (整數相除的餘數) |
as | 程序運行階段類型轉換 (RTTI運算符) |
and | 邏輯或按位求和 |
shl | 按位左移 |
shr | 按位右移 |
加減運算符 | |
+ | 相加、集合並集、字符串連接或指針增加一個偏移量 |
- | 相減、集合差集或指針減少一個偏移量 |
or | 邏輯或按位或運算 |
xor | 邏輯或按位異或運算 |
關係及比較運算符(最低優先級) | |
= | 判斷是否相等 |
<> | 判斷是否不相等 |
< | 判斷是否小於 |
> | 判斷是否大於 |
<= | 判斷是否小於或等於,或是否是一個集合的子集 |
>= | 判斷是否大於或等於,或是否是一個集合的父集 |
in | 判斷是否是集合成員 |
is | 判斷對象是否類型兼容 (又一個RTTI運算符) |
集合運算符
集合運算符包括並(+)、差(-)、交(*)、成員檢測(in),及一些關係運算符。要把一個元素添加到集合中,你可以採用集合並運算。下面是一個選擇字體的Delphi 例子:
Style := Style + [fsBold];
Style := Style + [fsBold, fsItalic] - [fsUnderline];
另一種方法是利用標準過程Include 和Exclude,它們效率更高(但不能用於控件的集合類型屬性,因爲只能操縱一個元素):
Include (Style, fsBold);