Pascal語言的大小寫不敏感特性有一個(gè)例外:控件包中的Register 過程必須以大寫字母R開始,因?yàn)樾枰cC++Builder 兼容。
,編譯器不編譯代碼中的空格、空行和Tab鍵空格,這些元素通稱為空白,它們只用來提高代碼的可讀性,不影響編譯過程。(也就是說: = 這樣的寫法沒有問題,我原來還以為由問題那!)
記住要用代碼模板(方便開發(fā))快捷鍵:Ctrl+J
Absolute 關(guān)鍵字是共享變量地址有些象C++的共用體
var
Str: string[32];
StrLen: Byte absolute Str;
與大多數(shù)編程語言相反,Pascal語言中and和or運(yùn)算符的優(yōu)先級比關(guān)系運(yùn)算符高。因此,如果你的代碼為a < b and c < d,編譯器首先會編譯and運(yùn)算符,由此導(dǎo)致編譯出錯(cuò)。為此你應(yīng)該把每個(gè) < 表達(dá)式用小括號括起來: (a < b) and (c < d)?!?/span>
集合,集合除了 并(+)差(-) 交(*) 等可以用INCLUDE和EXCLUDE效率更高
Include (Style, fsBold);
當(dāng)時(shí)間和日期轉(zhuǎn)換成字符串時(shí),其轉(zhuǎn)換格式取決于Windows 的系統(tǒng)設(shè)置。
Round轉(zhuǎn)換一個(gè)實(shí)型值為四舍五入后的整型值
注意:在最近版本的Delphi Pascal 編譯器中,Round 函數(shù)是以 CPU 的 FPU (浮點(diǎn)部件) 處理器為基礎(chǔ)的。這種處理器采用了所謂的 "銀行家舍入法",即對中間值 (如 5.5、6.5) 實(shí)施Round函數(shù)時(shí),處理器根據(jù)小數(shù)點(diǎn)前數(shù)字的奇、偶性來確定舍入與否,如 5.5 Round 結(jié)果為 6,而 6.5 Round 結(jié)果也為6, 因?yàn)?/span> 6 是偶數(shù)。并不只是DELPHI這樣(VB也這樣 )
注意:一般來說,你應(yīng)該避免使用上述不命名類型,因?yàn)槟悴荒馨阉鼈冏鳛閰?shù)傳給例程,也不能用于聲名同一類型的其他變量。實(shí)際上,Pascal的類型兼容規(guī)則是基于類型名的,而不是基于實(shí)際的類型定義。兩個(gè)類型相同的變量仍有可能是不兼容的,除非他們的類型有完全相同的名字。對于不命名類型,需要編譯器給它分配一個(gè)內(nèi)部名字,因此對于數(shù)據(jù)結(jié)構(gòu)復(fù)雜的變量,要習(xí)慣于定義命名數(shù)據(jù)類型,你一定不會為此白費(fèi)工夫的。
Delphi 編譯會通過,但在運(yùn)行時(shí),如果你開啟了范圍檢查編譯選項(xiàng)(在工程選項(xiàng)對話框的編譯器頁設(shè)置),你將得到 Range check error (范圍檢測錯(cuò)誤)信息。
注意:建議你在開發(fā)程序時(shí)開啟上述編譯選項(xiàng),以使程序更健壯并易于調(diào)試。這樣即使遇上錯(cuò)誤,你也會得到一個(gè)明確的信息而不是難以琢磨的行為。最終完成程序時(shí)你可以去掉這個(gè)選項(xiàng),使程序運(yùn)行得快一些,不過影響很小。因此我建議你開啟所有運(yùn)行時(shí)的檢測選項(xiàng),如溢出檢查和堆棧檢查,甚至提交程序時(shí)仍然保留它們
Delphi 長字符串的情況略有不同,長字符串看起來象引用,但是如果你改變了該字符串的串變量,那么這個(gè)串在更新前將被拷貝下來。作為值參被傳遞的長字符串只在內(nèi)存使用和操作速度方面才象引用,但是如果你改變了字符串的值,初始值將不受影響。相反,如果通過引用傳遞長字符串,那么串的初始值就可以改變。
實(shí)質(zhì)上字符串的值傳遞類似引用,只不過系統(tǒng)在幕后進(jìn)行了操作,這樣效率會低。
在Delphi中不常使用指針,但是你經(jīng)常會用一個(gè)極為相似的結(jié)構(gòu)--引用(references)。每個(gè)對象實(shí)例實(shí)際上是一個(gè)隱含的指針,或說是對其實(shí)際數(shù)據(jù)的引用,利用引用,你能象用其他數(shù)據(jù)類型一樣使用對象變量。
當(dāng)通過引用傳遞參數(shù)時(shí),引用參數(shù)用關(guān)鍵字var 標(biāo)示
procedure DoubleTheValue (var Value: Integer);
Delphi 3增加了一種新的參數(shù):out。out參數(shù)沒有初始值,只是用來返回一個(gè)值。out參數(shù)應(yīng)只用于COM過程和函數(shù),一般情況下最好使用更有效的var參數(shù)。除了沒有初始值這一點(diǎn)之外,out參數(shù)與var參數(shù)相同。
常量參數(shù),不能夠在過程或函數(shù)中改變傳遞過來的值。只可使用。
果你只傳遞數(shù)組的一部分,可使用Slice 函數(shù),
明一個(gè)過程或函數(shù),而且只給出它的名字和參數(shù),不列出其實(shí)現(xiàn)代碼,需要在句尾加forward 關(guān)鍵字:
關(guān)鍵字表
關(guān)鍵字 | 作用 |
absolute | 指令 (變量) |
abstract | 指令 (方法) |
and | 運(yùn)算符 (布爾) |
array | 類型 |
as | 運(yùn)算符 (RTTI) |
asm | 語句 |
assembler | 向后兼容 (匯編) |
at | 語句 (異常處理) |
automated | 訪問類別符 (類) |
begin | 塊標(biāo)記 |
case | 語句 |
cdecl | 函數(shù)調(diào)用協(xié)定 |
class | 類型 |
const | 聲明或指令(參數(shù)) |
constructor | 特殊方法 |
contains | 運(yùn)算符 (集合) |
default | 指令 (屬性) |
destructor | 特殊方法 |
dispid | dispinterface 界面類別符 |
dispinterface | 類型 |
div | 運(yùn)算符 |
do | 語句 |
downto | 語句 (for) |
dynamic | 指令 (方法) |
else | 語句 (if 或 case) |
end | 塊標(biāo)記 |
except | 語句 (異常處理) |
export | 向后兼容 (類) |
exports | 聲明 |
external | 指令 (函數(shù)) |
far | 向后兼容 (類) |
file | 類型 |
finalization | 單元結(jié)構(gòu) |
finally | 語句 (異常處理) |
for | 語句 |
forward | 函數(shù)指令 |
function | 聲明 |
goto | 語句 |
if | 語句 |
implementation | 單元結(jié)構(gòu) |
implements | 指令 (屬性) |
in | 運(yùn)算符 (集合) - 工程結(jié)構(gòu) |
index | 指令 (dipinterface界面) |
inherited | 語句 |
initialization | 單元結(jié)構(gòu) |
inline | 向后兼容 (見 asm) |
interface | 類型 |
is | 運(yùn)算符 (RTTI) |
label | 聲明 |
library | 程序結(jié)構(gòu) |
message | 指令 (方法) |
mod | 運(yùn)算符 (數(shù)學(xué)) |
name | 指令 (函數(shù)) |
near | 向后兼容 (類) |
nil | 數(shù)值 |
nodefault | 指令 (屬性) |
not | 運(yùn)算符 (布爾) |
object | 向后兼容 (類) |
of | 語句 (case) |
on | 語句 (異常處理) |
or | 運(yùn)算符 (布爾) |
out | 指令 (參數(shù)) |
overload | 函數(shù)指令 |
override | 函數(shù)指令 |
package | 程序結(jié)構(gòu) (控件包) |
packed | 指令 (記錄) |
pascal | 函數(shù)調(diào)用協(xié)定 |
private | 訪問類別符 (class) |
procedure | 聲明 |
program | 程序結(jié)構(gòu) |
property | 聲明 |
protected | 訪問類別符 (類) |
public | 訪問類別符 (類) |
published | 訪問類別符 (類) |
raise | 語句 (異常處理) |
read | 屬性類別符 |
readonly | dispatch 界面類別符 |
record | 類型 |
register | 函數(shù)調(diào)用協(xié)定 |
reintroduce | 函數(shù)指令 |
repeat | 語句 |
requires | 程序結(jié)構(gòu) (控件包) |
resident | 指令 (函數(shù)) |
resourcestring | 類型 |
safecall | 函數(shù)調(diào)用協(xié)定 |
set | 類型 |
shl | 運(yùn)算符 (數(shù)學(xué)) |
shr | 運(yùn)算符 (數(shù)學(xué)) |
stdcall | 函數(shù)調(diào)用協(xié)定 |
stored | 指令 (屬性) |
string | 類型 |
then | 語句 (if) |
threadvar | 聲明 |
to | 語句 (for) |
try | 語句 (異常處理) |
type | 聲明 |
unit | 單元結(jié)構(gòu) |
until | 語句 |
uses | 單元結(jié)構(gòu) |
var | 聲明 |
virtual | 指令 (方法) |
while | 語句 |
with | 語句 |
write | 屬性類別符 |
writeonly | dispatch 界面類別符 |
xor | 運(yùn)算符 (布爾) |
運(yùn)算符優(yōu)先級表
單目運(yùn)算符 (最高優(yōu)先級) | |
@ | 取變量或函數(shù)的地址(返回一個(gè)指針) |
not | 邏輯取反或按位取反 |
乘除及按位運(yùn)算符 | |
* | 相乘或集合交集 |
/ | 浮點(diǎn)相除 |
div | 整數(shù)相除 |
mod | 取模 (整數(shù)相除的余數(shù)) |
as | 程序運(yùn)行階段類型轉(zhuǎn)換 (RTTI運(yùn)算符) |
and | 邏輯或按位求和 |
shl | 按位左移 |
shr | 按位右移 |
加減運(yùn)算符 | |
+ | 相加、集合并集、字符串連接或指針增加一個(gè)偏移量 |
- | 相減、集合差集或指針減少一個(gè)偏移量 |
or | 邏輯或按位或運(yùn)算 |
xor | 邏輯或按位異或運(yùn)算 |
關(guān)系及比較運(yùn)算符(最低優(yōu)先級) | |
= | 判斷是否相等 |
<> | 判斷是否不相等 |
< | 判斷是否小于 |
> | 判斷是否大于 |
<= | 判斷是否小于或等于,或是否是一個(gè)集合的子集 |
>= | 判斷是否大于或等于,或是否是一個(gè)集合的父集 |
in | 判斷是否是集合成員 |
is | 判斷對象是否類型兼容 (又一個(gè)RTTI運(yùn)算符) |