




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Delphi關鍵字和保留字分類整理 Delphi 中的“關鍵字”和“保留字”,方便查詢“關鍵字”和“保留字”不做區(qū)分,一共 107 個。- 名稱:【program】、【library】、【package】、【unit】 功能:用于標識程序文件、動態(tài)鏈接庫文件、包文件、單元文件的文件頭。 program :編譯后生成 exe 文件,可以直接執(zhí)行。 library :編譯后生成 dll 文
2、件,可被其他程序調用。 package :編譯后生成 bpl 文件,可被安裝到 delphi 的控件庫中,從而在以后 的開發(fā)中使用控件。 unit :編譯后生成 dcu 文件,將被編譯到 exe 和 dll 文件中。- 空程序文件 Test.dpr program Project1;beginend.- 空動態(tài)鏈接庫文件 Test.dp
3、r library Project1;beginend.- 空包文件 Test.dpk package Package1;end.- 空單元文件 Test.pas unit Unit1;interfaceimplementationend.- 名稱:【contains】、【requires】 功能:與包文件相關的關鍵字。 contains :用于指出某個包(package)是否包含某個文件,用 contains 引入
4、60; 的文件必須被添加到包文件中,它可以避免關鍵文件的引用丟失。 requires :指出編譯 package 時的必備條件。若 requires 的條件未滿足,則 不允許編譯包。-package MyPackage;requires 包需要運行在下面的環(huán)境中 rtl, clx;contains 包需要用到下面的文件 &
5、#160; DB, DBMyControl;end.- 名稱:【interface】、【implementation】、【initialization】、【finalization】 功能:與單元文件相關的關鍵字。 interface :單元文件的接口部分,也用于定義接口類型。 implementation :單元文件的實現(xiàn)部分。
6、160; initialization :單元文件的初始化部分。 finalization :單元文件的反初始化部分。- 單元文件結構 unit Unit1;interface 引用其他單元、定義數(shù)據(jù)類型、定義過程函數(shù)、定義變量常量等 此處定義的類型或數(shù)據(jù)對其他單元是可見的(可訪問的) implementation 引用其他單元、實現(xiàn)接口部分定義的類型、過程、函數(shù)的具體代碼 此處定義的類型或變量只對本單
7、元可見 initialization 這里編寫單元被載入時所要調用的方法 通常是初始化一些不能自動初始化的對象,也可以不用 initialization 最常用的情況是對 OLE 對象做初始化 finalization 這里編寫單元被釋放時所要調用的方法 通常是釋放掉單元中不能自動釋放的對象,也可以不用 finalization 最常用的情況是對 OLE 對象做反初始化 end.- 定義接口類型 IEnumerator = inter
8、face(IInterface) function GetCurrent: TObject; function MoveNext: Boolean; procedure Reset; property Current: TObject read GetCurrent;end;- 名稱:【uses】 功能:用于引用一個外部的單元。 uses 語
9、句通常放在一個單元的接口部分或實現(xiàn)部分。- 程序文件 program Project1;uses Forms, Unit1 in 'Unit1.pas' Form1;beginend.- 單元文件 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes;implementationuses StrUtrls;end.- 名稱:【type】 功能:用于聲明各種類型。-typ
10、e 聲明接口 IMyInterface = interface end; 聲明類指針 PMyObject = TMyObject; 聲明類 TMyObject = class(TObject) end; 聲明結構 TMyRecord = record end; 聲明函數(shù) TMyFunc = functi
11、on(I: Integer): string; 聲明自定義類型 TCol = (cItemA, cItemB, cItemC); TColSet = set of TCol; TLatter = 'A' . 'Z' TInt = Integer;- 名稱:【var】、【const】、【resourcestring】、【threadvar】、【absolute】 功能:用于聲明變量和常量
12、 var :聲明變量,或者聲明函數(shù)的參數(shù)為傳址參數(shù)。 const :聲明常量,或者聲明函數(shù)的參數(shù)為常量參數(shù)。 resourcestring :聲明資源字符串。 threadvar :聲明一個線程內變量,此變量僅供各個線程內部使用。如果在線程外
13、; 初始化該變量,則初始化的內容不會被傳入線程內,當線程創(chuàng)建時,該變量為空, 且被認為是線程內的私有變量,與線程外的該變量互不干擾,與其它線程內的該變 量也互不干擾。threadvar 必須聲明為全局變量,然后在各個線程內使用。 Delphi 說在線程內使用的 threadvar 必須在線程結束前手
14、動釋放其占用的空間。 比如 S := '' 即將字符串資源釋放。關于資源釋放,Delphi 沒有更多解釋。 absolute :定義一個變量與另一個變量地址相同- 關于變量和常量的聲明 procedure TForm1.Button1Click(Sender: TObject);resourcestring 聲明資源字符串 rsButtonCaption =
15、0;'測試(&T)'const 聲明常量 conMax = 50;var 聲明變量 iNum: Integer; bFlag: Boolean;begin Button1.Caption := rsButtonCaption; iNum := Random(100); bFlag := iNum >= conMax; Caption := IntToStr(iNum) + ' - '
16、+ BoolToStr(bFlag, True);end;- 關于 threadvar unit Form1Unit;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Se
17、nder: TObject); private Private declarations public Public declarations end;var Form1: TForm1;implementation$R *.DFM NOTE: 將 GlobalStr 的定義由 var 改為 threadvar 來觀察不同 var 線程內外共用此變量 / threadvar
18、; 線程內將創(chuàng)建此變量的一個副本,線程內外此變量互不干擾 GlobalStr: string;type TTLSThread = class(TThread) private FNewStr: String; protected procedure Execute; override; public constructor Cr
19、eate; overload; constructor Create(const ANewStr: String); overload; end;procedure SetShowStr(const S: String; const sTitle: string = '');begin if S = '' then
20、; MessageBox(0, PChar(GlobalStr), PChar(sTitle), MB_OK) else GlobalStr := S;end;constructor TTLSThread.Create;begin inherited Create(False);end;constructor TTLSThread.Create(const ANewStr: String);begin FNewStr := ANewStr;
21、 inherited Create(False);end;procedure TTLSThread.Execute;begin FreeOnTerminate := True; SetShowStr(FNewStr); SetShowStr('', '線程內 - 線程執(zhí)行時');end;procedure TForm1.Button1Click(Sender: TObject);begin SetShowStr('線程外的 GlobalStr 變量'
22、); SetShowStr('', '線程外 - 線程創(chuàng)建前'); TTLSThread.Create('線程內的 GlobalStr 若為 threadvar 類型,則與線程外的 GlobalStr 無關'); Sleep(100); SetShowStr('', '線程外 - 線程創(chuàng)建后,觀察 GlobalStr 在線程內外是否不同');end;end.- 同地址變量 下面的代碼聲明了變量 ucLen 的起始地址與 ShortStrig 型變量
23、 sStr 相同,由 于 ShortString 的第 0 個位置保存了字符串的長度,所以 ucLen 的值即為字符 串的長度。 procedure TForm1.Button1Click(Sender: TObject);var sStr: ShortString; ucLen: Byte absolute sStr;begin sStr := '1234567890' Caption := IntToStr(ucLen);end;- 名稱:
24、【begin】、【end】 功能:begin end :組合使用,可以表示一段代碼或一個程序的開始和結束。 end 還可以與 case, class, interface, asm, unit, package 等相匹配。 對于語句塊,end 后必須添加分號。而對于單元或包,end 后必須添加句點。在 If 語句中 else 關鍵字前的 end 后不允許添加分號。- 一段代碼的開始和結束 procedure
25、;TForm1.Button1Click(Sender: TObject);var I: Integer;begin I := Random(100); if I < 50 then begin Caption := IntToStr(I); end else begin Caption := IntToStr(I - 50);
26、60;end;end;- 程序文件的開始和結束 program Project1;beginend.- 包文件的開始和結束,不需要 begin package Package1;end.- 類的開始和結束,不需要 begin TMyObject = class(TObject)end;- 名稱:【if】、【then】、【else】、【case】 功能:if then else 組合使用,構成條件判斷語句,當不需要 else 時,可以省略 else ,當 el
27、se 與 if 配合使用時,else 前面的一條語句不能以分號結束。 case else 組合使用,構成條件選擇語句。 else 還可以與 try except on 語句組合,構成異常處理語句,詳見 except。- if then else(條件判斷) procedure TForm1.Button1Click(Sender: TObject);var I: Integer;begin I
28、:= Random(100); if I < 50 then Caption := IntToStr(I) else Caption := IntToStr(I - 50); end;end; if then(條件判斷,無 else) procedure TForm1.Button1Click(Sender: TObject);var I: Integer;begin I :=
29、Random(100); if I < 50 then Caption := IntToStr(I);end;- case else(條件選擇) procedure TForm1.Button1Click(Sender: TObject);var I: Integer;begin I := Random(100); case I of 1 . 33:
30、 Caption := '小' 34 . 66: Caption := '中' 67 . 99: Caption := '大' else Caption :=
31、60;'0' end;end;- 名稱:【for】、【to】、【downto】、【do】、【while】、【repeat】、【until】 功能:for to(或downto) do 組合使用,構成 for 循環(huán)語句。 while do 組合,構成 while 循環(huán)語句。 repeat until 組合,構成 repeat 循環(huán)語句。
32、; for 還可以與 in 組合,構成 for 循環(huán)語句,詳見 in do 還可以與 with 組合構成默認對象語句,詳見 with do 還可以與 try except on 組合使用,構成異常處理語句,詳見 except。- for 循環(huán)語句,循環(huán)變量遞增 procedure TForm1.Button1Click(Sender: TObject);var
33、 I, iSum: Integer;begin iSum := 0; for I := 1 to 100 do iSum := iSum + I; Caption := IntToStr(iSum); 結果 5050 end; for 循環(huán)語句,循環(huán)變量遞減 procedure TForm1.Button1Click(Sender: TObject);var I, iSum: Integer;begin
34、60; iSum := 0; for I := 100 downto 1 do iSum := iSum + I; Caption := IntToStr(iSum); 結果 5050 end;- while 語句 procedure TForm1.Button1Click(Sender: TObject);var I, iSum: Integer;begin iSum := 0; I
35、:= 0; while I <= 100 do begin iSum := iSum + I; Inc(I); end; Caption := IntToStr(iSum); 結果 5050 end;- repeat 語句 procedure TForm1.Button1Click(Sender: TObject);var I, iSum: Integer;begin
36、 iSum := 0; I := 0; repeat iSum := iSum + I; Inc(I); until I > 100; Caption := IntToStr(iSum); 結果 5050 end;- 名稱:【with】 功能:用于設置默認對象,簡化代碼。- with 語句 procedure TForm1.Button1Cl
37、ick(Sender: TObject);begin/ 這里的 4 行代碼可以用 with 語句簡化輸入:/ (Sender as TButton).Left := 0;/ (Sender as TButton).Top := 0;/ (Sender as TButton).Width := 120;/ (Sender as TButton).Height := 60; with (Sender as TButton) do begin Left := 0;
38、0; Top := 0; Width := 120; Height := 60; end; Caption := '測試 with 語句' Width := Width div 2; Height := Height div 2;end;- 名稱:【label】、【goto】 功能:goto :無條件跳轉
39、0; label :定義跳轉標簽,goto 語句只能跳轉到已定義的標簽位置。-procedure TForm1.Button1Click(Sender: TObject);label AA;var I, iNum: Integer;begin I := 0; iNum := 0;AA: inc(I); iNum := iNum + I; if I < 10 then
40、 goto AA; Caption := IntToStr(iNum); 結果 55 end;- 名稱:【asm】、【assembler】 功能:asm 用于在程序中插入?yún)R編代碼。 使用匯編代碼時, 必須使用 asm .end; 的結構,而非 begin . end; assembler 用于支持早期的匯編, 如8
41、0386等。它和 asm 的區(qū)別是 asm 允許使用 Win32 匯編, 而 assembler 只允許 80x86 匯編, 它不允許 Invoke 語句的出現(xiàn)。-function IntToHex(Value: Integer; Digits: Integer): string;asm CMP EDX, 32 JBE A1 xor EDX, EDXA1: PUSH ESI MOV
42、0; ESI, ESP SUB ESP, 32 PUSH ECX MOV ECX, 16 CALL CvtInt MOV EDX, ESI POP EAX CALL System.LStrFromPCharLen ADD ESP, 32 POP ESIend;- 名稱:【and】、【or】、【not】、【xor】、【shl】、【shr】、【div】、【mod】 功
43、能:Delphi 運算符。 and(邏輯與 或 按位與) or(邏輯或 或 按位或) not(邏輯非 或 按位否) xor(邏輯異或 或 按位異或) shl(位左移) shr(位右移) div(整除) mod(求余數(shù)) xor(邏輯異或 或 按位異或)我喜歡把它叫
44、做“邏輯異”,只要 xor 兩邊的布爾 值不相同(相異),結果就為 True,否則就為 False。只要 xor 兩邊的位狀態(tài)不 同(0 和 1 不同),結果就為 1,否則就為 0。- 邏輯與 procedure TForm1.Button1Click(Sender: TObject);var A, B: Integer;begin A := 1; B := -1;
45、0; if (A > 0) and (B > 0) then Caption := 'True' else Caption := 'False' 結果 False end; 邏輯或 procedure TForm1.Button1Click(Sender: TObject);var A, B: Integer;b
46、egin A := 1; B := -1; if (A > 0) or (B > 0) then Caption := 'True' 結果 True else Caption := 'False'end; 邏輯非 procedure TForm1.Button1Click(Se
47、nder: TObject);var A, B: Integer;begin A := 1; B := -1; if not A > B then Caption := 'True' else Caption := 'False' 結果 False end; 邏輯異或 procedure TForm1.
48、Button1Click(Sender: TObject);var A, B: Integer;begin A := 1; B := -1; if (A > 0) xor (B > 0) then Caption := 'True' xor 兩邊的布爾值不同,結果 True else Caption :=
49、0;'False'end;- 按位與 procedure TForm1.Button1Click(Sender: TObject);var A, B, C: Integer;begin A := 360; B := 120; C := A and B; Caption := IntToStr(C); 結果:104 end; 按位或 procedure TForm1.Button1Click(Sender: TObject);var
50、60; A, B, C: Integer;begin A := 360; B := 120; C := A or B; Caption := IntToStr(C); 結果:376 end; 按位否 procedure TForm1.Button1Click(Sender: TObject);var A, C: Integer;begin A := 360; C := not A; Caption
51、 := IntToStr(C); 結果:-361 end; 按位異或 procedure TForm1.Button1Click(Sender: TObject);var A, B, C: Integer;begin A := 360; B := 120; C := A xor B; Caption := IntToStr(C); 結果:272 end; 位左移 procedure TForm1.Button1Click(Sen
52、der: TObject);var A, C: Integer;begin A := 360; C := A shl 1; 相當于 A 乘以 2 的 1 次方 Caption := IntToStr(C); 結果:720 end; 位右移 procedure TForm1.Button1Click(Sender: TObject);var A, C: Integer;begin A := 360; C := A&
53、#160;shr 1; 相當于 A 除以 2 的 1 次方 Caption := IntToStr(C); 結果:180 end;- 整除 procedure TForm1.Button1Click(Sender: TObject);var A, B, C: Integer;begin A := 36; B := 5; C := A div B; Caption := IntToStr(C);
54、; 結果:7 end; 求余數(shù) procedure TForm1.Button1Click(Sender: TObject);var A, B, C: Integer;begin A := 36; B := 5; C := A mod B; Caption := IntToStr(C); 結果:1 end;- 名稱:【try】、【finally】、【except】、【on】、【raise】 功能:這些都是異常處理語句。
55、0; try finally 組合使用,構成異常處理語句。先執(zhí)行 try 部分的語句,無論 try 部分是否執(zhí)行成功,finally 部分都會被執(zhí)行。 try except on 組合使用,構成異常處理語句。正常情況下執(zhí)行 try 部分的語句。 如果發(fā)生異常,則執(zhí)行 except 后的語
56、句。 raise 用于拋出異常。如果希望通過外部程序處理異常,或是在異常發(fā)生時重新將 異常拋出,可以使用 raise 語句。異常被拋出后,raise 后面的代碼將不被執(zhí)行。- try finally(異常處理) procedure TForm1.Button1Click(Sender: TObject);var Strs: TStringList;begin Strs := TStringLis
57、t.Create; try Strs.Add('finally Test'); Caption := Strs0; finally Strs.Free; end;end;- try except on else(異常處理) procedure TForm1.Button1Click(Sender: TObject);var I: Integer; S: String;beg
58、in S := '123A' try I := StrToInt(S); except on EZeroDivide do Caption := 'EZeroDivide' on EOverflow do
59、 Caption := 'EOverflow' else Caption := 'Unknow Error' end;end;- raise 拋出異常 procedure TForm1.Button1Click(Sender: TObject);var I: Integer;begin 普通代碼中拋出異常 I := -1; if
60、0;I < 0 then raise exception.Create('整數(shù)不能小于 0'); ShowMessage('異常被拋出后.');end; raise 拋出異常 procedure TForm1.Button1Click(Sender: TObject);var I: Integer; S: string;begin try except 中拋出異常 try
61、0; S := '123A' I := StrToInt(S); except on E: exception do raise exception.Create(E.Message); end; ShowMessage('異常被拋出后.');end;- 名稱:【procedure】
62、、【function】、【forward】、【out】 功能:Delphi 函數(shù)、過程相關關鍵字。 procedure :定義過程,過程無返回值。主要用來執(zhí)行一系列動作。還可以用來聲 明自定義函數(shù)類型。 function :定義函數(shù),函數(shù)有返回值。主要用來計算某一結果。還可以用來聲明
63、160; 自定義函數(shù)類型。 forward :用于函數(shù)(或過程)的前置聲明,這樣可以使代碼中“較先實現(xiàn)的函數(shù) ”可 以調用“較后實現(xiàn)的函數(shù)”,如果“較后實現(xiàn)的函數(shù)”不做前置聲明,則它不 能被前面的函數(shù)調用。 out :定義函數(shù)(或過程)的參
64、數(shù)為傳出類型,out 類型的參數(shù)用來將函數(shù)的執(zhí)行 結果通過此參數(shù)返回給調用者(傳地參數(shù))。調用者在調用函數(shù)時,不需要給 out 類型的參數(shù)賦值,賦了也沒用。 還有之前提到的一個關鍵字 var :定義函數(shù)(或過程)的參數(shù)為傳址類型,var 類型的參數(shù)在函數(shù)內的一切改
65、變都會返回給調用者,調用者也可以在調用函數(shù)前, 給 var 參數(shù)賦值,然后傳遞到函數(shù)里面使用。- 函數(shù)前置聲明 function CalcPerimeter(R: Double): Double; forward;function CalcArea(R: Double): Double; forward; 過程:執(zhí)行一系列動作,顯示圓的半徑、周長、面積信息 procedure ShowInfo(Radius: Double);var sRadius:
66、 string; sPerimeter: string; sArea: string;begin sRadius := FloatToStr(Radius); 如果不做前置聲明,則這里無法調用 CalcPerimeter sPerimeter := FloatToStr(CalcPerimeter(Radius); 如果不做前置聲明,則這里無法調用 CalcArea sArea := FloatToStr(CalcArea(Radius);
67、ShowMessage('半徑:' + sRadius + #13#10 + '周長:' + sPerimeter + #13#10 + '面積:' + sArea);end; 函數(shù):計算圓的周長 function CalcPerimeter(R: Double): Double;begin 2 乘以 派 乘以 半徑,Pi 是系統(tǒng)函數(shù),計算圓周率 Result :=
68、;2 * Pi * R;end; 函數(shù):計算圓的面積 function CalcArea(R: Double): Double;begin 派 乘以 半徑的平方,Pi 是系統(tǒng)函數(shù),計算圓周率 Result := Pi * R * R;end;procedure TForm1.Button1Click(Sender: TObject);begin ShowInfo(10.5); ShowInfo(30.25);end;- 聲明自定義函數(shù)類型 TMyFunc type TMyFunc = function(I: Integer): Integer; 某個函數(shù) function GetCountNum(Num: Integer): Integer;var I: Integer;begin Result := 0; for I := 0 to Num do begin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 閱讀課題立項申報書模板
- 幼兒早期閱讀課題申報書
- 買賣運營車輛合同范本
- 咖啡承包勞務合同范例
- 合同范例國標規(guī)范
- 課題申報書選題依據(jù)
- 共同委托審計合同范本
- 單項承攬合同范例
- 借用工合同范本
- 員工合同范本 江西個體
- 思想道德與法治知到章節(jié)答案智慧樹2023年寧波大學
- 廖常初《FX系列LC編程及應用》課后習題答案
- 世界社會主義五百年
- 大學生職業(yè)生涯規(guī)劃獲獎作品
- 加氫裂化操作工題庫(合并版)
- 農田土地翻耕合同
- 鐵路混凝土工程施工質量驗收標準(TB 10424-2018 )培訓教材
- 2023年全國醫(yī)學博士英語統(tǒng)考真題及參考答案
- 正大集團大豬場開發(fā)流程
- 房地產金融創(chuàng)新與風險防范的理論演進
- GB/T 41255-2022智能工廠通用技術要求
評論
0/150
提交評論