標籤:des style blog http color 使用
Delphi 是以Object Pascal 語言為基礎的可視化開發工具,所以要學好Delphi,首先要掌握的就是Object Pascal 語言。
1 語言基礎
Object Pascal 語言是在Pascal 語言的基礎上發展起來的,它繼承了Pascal 語言文法嚴謹、資料結構豐富等優點,同時融入了物件導向編程的文法要素,使之成為一個完善的物件導向的程式設計語言。
1.1 Object Pascal 語言編寫環境
隨著Windows 作業系統的普及,很少有人在DOS 環境下編寫程式了,下面將為讀者介紹如何使用Delphi 編寫Object Pascal 程式。
一般來說,使用Delphi 開發出來的程式有以下3 種。
1.圖形介面程式
圖形介面程式是目前Windows 平台最常見的應用程式,這些程式通過表單和對話方塊與使用者進行資訊互動,實現一定的功能。例如Microsoft 公司的Office 系列軟體和正在使用的Delphi 等,它們都是圖形介面程式。
2.控制台程式
控制台程式是指一些沒有圖形化使用者介面的32 位Windows 應用程式,類似在DOS 環境下啟動並執行程式。這些程式很少要求使用者輸入大量的資訊,一般只實現特定的功能。控制台程式的代碼較小,佔用的系統資源少,因此編譯、連結的速度比較快。
3.伺服器程式
伺服器程式可以接受和處理客戶應用程式的請求,並將結果資訊返回給客戶應用程式。伺服器應用程式一般在後台運行,不需要大量的人機互動資訊。
下面以開發一個簡單的控制台程式為例,向讀者介紹Delphi 中產生Object Pascal 程式的基本方法,並對Object Pascal 程式的一般結構進行簡單說明。
在Delphi 整合式開發環境中,依次選擇"File/New/Other"功能表項目開啟"New Items"對話方塊。選中"New"標籤頁中的"Console Application"選項,單擊"OK"按鈕,代碼編輯器中將自動開啟一個初始名為Project1.dpr 的控制台程式。請將Project1.dpr 檔案修改為如下內容:
program Project1;{$APPTYPE CONSOLE}//uses SysUtils;var str:string;begin // Insert user code here writeln(’您好,這是一個示範程式,請輸入一行文字:’); readln(str); writeln(’您輸入的是:’,str); readln;end.
依次選擇“File”/“Save All”功能表項目可以將更改後的工程檔案儲存到指定的檔案夾中。按 F9 鍵進入編譯、連結、運行程式。待程式提示“您好,這是一個示範程式,請輸入一行文字:”文字後,使用者可以輸入一些內容,例如輸入“早上好!”,程式將輸出結果:“您輸入的是:早上好!”。
以下是對該程式的幾點說明:
- 程式第2 行中{$APPTYPE CONSOLE}是一個編譯器指令,它告訴編譯器這個程式是一個控制台程式。
- uses SysUtils 語句前加了兩個斜線,將這條語句以備註陳述式的形式屏蔽掉了,因為在這個例子中是不需要SysUtils 單元的。
- writeln 和readln 兩個函數分別表示輸出和輸入一行字元。程式最後的readln 語句是為了鎖定視窗,否則輸出結果將很快消失。
1.2 備註陳述式
作為起點,首先介紹如何在Object Pascal 代碼中添加註釋。如果不給程式加上適當的注釋,一段時間後就很難理清程式的流程。同時編譯器會將註解忽略,不會影響程式的編譯與運行。
Object Pascal 中有3 種類型的注釋。
- 花括弧注釋:組合符號“{”和“}”的成對使用,表示它們之間的內容是注釋部分。
- 圓括弧/星號注釋:組合符號“(*”和“*)”的成對使用,表示它們之間的內容是注釋部分。
- Visual C++風格的雙斜杠注釋:符號“//”的單獨使用,表示後面的內容是注釋部分。
看下面的例子:
{花括弧注釋} (*圓括弧/星號注釋*) //C++風格的注釋
前兩種注釋在本質上是相同的,編譯器把處於限定符頭和限定符尾中間的內容當作注釋。花括弧和圓括弧/星號比較適合在大段注釋時使用。如果在“{”或“(*”後面是一個“$”符號時,表示該句為一個編譯器指令,與普通的注釋不同,通常用來對編譯過程進行設定,例如1.1 節中樣本的第2行代碼:
{$APPTYPE CONSOLE}
對於Visual C++風格的注釋來說,雙斜杠後面到行尾的內容被認為注釋。此形式比較適用於單行和少量幾行注釋的情況。
注意,相同類型的注釋不要嵌套使用。雖然不同類型的注釋進行嵌套在文法上是合法的,但不建議這樣做。例如:
{(*這是合法的*)}(*{這是合法的}*)(*(*這是非法的*)*){{這是非法的}}
1.3 標識符
Object Pascal 語言使用的標識符包括字母A-Z、a-z、數字0-9 及其他一些標準字元。
表1-1 所示的單個字元是Object Pascal 語言的特殊符號。
表1-1 Object Pascal 語言的特殊符號的單個字元
| 特殊符號 |
| $ & * # * ( ) [ ] { } ^ ; : @ < = > , . * + / |
表1-2 所示的字元組合是Object Pascal 語言的單個的特殊符號。
表1-2 Object Pascal 語言的特殊符號的字元組合
| 特殊符號 |
| (* *) (. .) .. // := <> >= <= |
注意:[ ]與(. .)對應,{ }與(* *)對應。含義完全相同,可以相互替代。
在Object Pascal 語言中,標識符用來標識變數、常量、屬性、類、對象、過程、函數、程式、組件庫等。標識符可以由任意長度不帶空格的字串組成,但對於編譯器來講只有前面255個字元有效。其中,標識符的第1個字元必須是字母或底線,其餘字元可以是字母、數字或底線。通常,標識符由一個或多個具有適當意義的英文單片語成。Object Pascal 語言對區分字母的大小寫是不敏感的。在編程過程中,最好每個單詞的首字母大寫,其他字母小寫,以便於區分。
1.4 保留字和指令字
Object Pascal 語言定義了67 個保留字,它們不能被定義為標識符,如表1-3 所示。
表1-3 Object Pascal 語言的保留字
| 保留字 |
and array as asm begin case class const constructor destructor interface div Do down to else end except exports file finalization finally for function goto if implementation in inherite initialization inline is interface label library mod Nil not object of or out packed procedure program property raise record repeat resource string set shl shr then thread var to try type unit until uses var while with xor |
Object Pascal 還定義了39 個指令字,它們具有特殊含義。但是,在使用者重新定義了指令字後,在範圍內它們就失去了原來的意義,如表1-4 所示。
表1-4 Object Pascal 語言的指令字
| 指令字 |
absolute abstract assembler automated cdecl contains default dispid dynamic export external far forward implements index message name near nodefault overload override package pascal private protected public published read readonly register reintroduce requires resident safecall stdcall stored virtual write writeonly |
其中Private、Protected、Public、Published、Automated、On 和At 是指令字,但是,應當視其為保留字,不要定義和它們同名的標識符。在Delphi 整合式開發環境的代碼編輯器中,保留字和指令字以黑體顯示,這樣就大大方便了使用者的使用,不必擔心因為不小心而錯誤地將保留字或指令字定義為標識符。