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