版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Delphi基本語法格式和常用函數(shù)分類:Delphi中的進(jìn)制轉(zhuǎn)換(如hex與bin) ShowMessage(Format('%d:%d', pos, length(keys)+':'+keys);Format('%d:%d:%x', pos, key_len,byte(pchar(keys)0) / 其中keys為string類型delphi快捷鍵-和vim對(duì)應(yīng)上的快捷鍵delphi延時(shí)函數(shù)代碼!Delphi文件操作函數(shù)Delphi關(guān)于多線程同步的一些方法,信號(hào)量,互斥量和臨界區(qū)delphi輕松實(shí)現(xiàn)原子操作-CreateS
2、emaphore獲得Integer和DWord類型的最大值 ShowMessage(IntToStr(High(Integer); ShowMessage(IntToStr(High(DWord);/ delphi的sleep()就是一個(gè)ms毫秒級(jí)延時(shí)函數(shù),但是使用sleep會(huì)導(dǎo)致程序短暫pendingprocedure TForm1.delay(MSecs: Integer);/延時(shí)函數(shù),MSecs單位為毫秒(千分之1秒) var FirstTickCount, Now: Longint;begin if MSecs <> 0 then beg
3、in FirstTickCount := GetTickCount(); repeat Application.ProcessMessages; Now := GetTickCount(); until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount); end;end;varwr
4、ite_semaphore:THandle;write_semaphore:=CreateSemaphore(0, 1, 1, nil);procedure TForm1.Button1Click(Sender: TObject);begin WaitForSingleObject(com.write_semaphore, INFINITE); / 返回值WAIT_TIMEOUT和WAIT_OBJECT_0 ReleaseSemaphore(com.write_semaphore, 1, nil);end;var file_name:string;file_name:=
5、'c:luther.gliethttp.txt'send_fd:=FileOpen(file_name, fmOpenRead or fmShareDenyWrite);FileWrite(com.log_fd, PChar(file_name), length(file_name);GetForegroundWindow找到xp操作系統(tǒng)上當(dāng)前前景窗體句柄.GetActiveWindow 只是獲取當(dāng)前程序中(嚴(yán)格地說是線程中)被激活的窗口;GetForegroundWindow 是獲取當(dāng)前系統(tǒng)中被激活的窗口.Delphi中FindWindow和FindWindowEx的語法和用
6、法 delphi獲取操作系統(tǒng)已運(yùn)行的所有窗口程序如打開的所有記事本的標(biāo)題兩個(gè)函數(shù)的級(jí)別不一樣, 一個(gè)是線程級(jí)、一個(gè)是系統(tǒng)級(jí).被激活的窗口不一定是頂層窗口(最上面的窗口). / 向當(dāng)前占有焦點(diǎn)的控件發(fā)送剪切板粘帖指令 if Edit1.Focused or Edit3.Focused or Edit4.Focused then SendMessage(Form1.ActiveControl.Handle, WM_PASTE, 0, 0);=char類型數(shù)組和string之間的使用以及bin數(shù)據(jù)轉(zhuǎn)換為hex函數(shù)使用/
7、 這是摘自Classes.pas庫中的實(shí)現(xiàn)代碼procedure BinToHex(Buffer, Text: PChar; BufSize: Integer); assembler;const Convert: array0.15 of Char = '0123456789ABCDEF'var I: Integer;begin for I := 0 to BufSize - 1 do begin Text0 := ConvertByte(BufferI) shr 4; &
8、#160; Text1 := ConvertByte(BufferI) and $F; Inc(Text, 2); end;end;procedure TForm1.Button3Click(Sender: TObject);var strs:string; p:pchar; i,max:Integer;begin strs:='abcd1234' max:=length(strs); p:=Pointer(strs);
9、160; i:=0; while (i <= max) do begin ShowMessage(pi); Inc(i); end;end;procedure TForm1.Button4Click(Sender: TObject);var strs:string; hex:array of char; max:integer; hex_len:Integer;begin
10、160; strs:='你cd1234' max:=length(strs); hex_len:=2*max;/+1; SetLength(hex, hex_len); BinToHex(pointer(strs), pointer(hex), max); ShowMessage(inttostr(length(string(hex); hex_len:=high(hex)+1; max:=hex_len shr 1;/div 2; ShowMessage(IntToStr(hex_
11、len)+':'+inttostr(max); strs:='' SetLength(strs, max); HexToBin(pointer(hex), pointer(strs), hex_len); ShowMessage(strs);end;function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integerprocedure BinToHex(Buffer, Text: PChar; BufSize: Integer);function Int
12、ToHex(Value: Integer; Digits: Integer): string; overload; function StrToInt(const S: string): Integer;=Format('x=%d',12);/'x=12'/最普通Format('x=%3d',12);/'x=12'/指定寬度Format('x=%f',12.0);/'x=12.00'/浮點(diǎn)數(shù)Format('x=%.3f',12.0);/'x=12.000'/
13、指定小數(shù)Format('x=%8.2f'12.0)/'x=12.00'Format('x=%.*f',5,12.0);/'x=12.00000'/動(dòng)態(tài)配置Format('x=%.5d',12);/'x=00012'/前面補(bǔ)充0Format('x=%.5x',12);/'x=0000C'/十六進(jìn)制Format('x=%1:d%0:d',12,13);/'x=1312'/使用索引Format('x=%p',nil);/
14、9;x=00000000'/指針Format('x=%1.1e',12.0);/'x=1.2E+001'/科學(xué)記數(shù)法Format('x=%',);/'x=%'/得到"%"S:=Format('%s%d',S,I);/S:=S+StrToInt(I);/連接字符串 去除字符串中所有空格,字符串替換字符串str:=StringReplace(str, ' ', '', rfReplaceAll);function StringReplace(cons
15、t S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;數(shù)組和string字符串之間拷貝數(shù)據(jù).var buf:array 0.63 of char; name:string;.name:=name+#13+#10+'hello!'+#13+#10+''strpcopy(pchar(buf),name);high(buf)取得數(shù)組最
16、大值,此處為63low(buf)獲得數(shù)組最小值,此處為0var strs:TStringList;begin strs:=TStringList.Create; strs.Delimiter:=' ' strs.DelimitedText:='I am a programer'strs0strs1等就是去除了所有空格的一個(gè)個(gè)單詞了字符串string常用處理函數(shù)uses StrUtils;LeftStr(str, 3); / 讀取最左邊的3個(gè)字符
17、RightStr(S, 3); / 讀取最右邊的3個(gè)字符Delete(str, 16, 1);Copy(str, 3, 4);還有MidStr用于中文拷貝,如:MidStr('電腦報(bào)', 1, 1);Insert('h', str, 2);LowerCase(str); / 將str變?yōu)樾慤pperCase(str); / 將str變?yōu)榇髮慞os('Like', 'I Like Reading!'); / 查找Like的位置,此處為3,如果沒有返回0Trim(str); / 刪除頭尾的所有空格TrimLeft(str);Trim
18、Right(str);=var S: String; arrText: array of Char; / 定義一個(gè)動(dòng)態(tài)數(shù)組SetLength(S, 10); / 當(dāng)設(shè)置后,S變量只能賦值長度為10的字符串。SetLength(arrText, 10); / 只有使用SetLength為動(dòng)態(tài)數(shù)組分配內(nèi)存空間后才能使用動(dòng)態(tài)數(shù)組。這句代碼的作用相當(dāng)于arrText: array0.9 of Char=var arrChar: array0.255 of Char; / 這里聲明了長度為256的Char型數(shù)組StrPCopy(arrChar, 'Come o
19、n, baby!');=1. 常量:固定值,不可變數(shù)。1) const 常量名 =常量值(表達(dá)式);2) resourcestring 常量名 =字符串(常量);2.
20、0; 變量1) 定義 Var 名字1,名字2,名字n:類型;2) 命名原則(參考) 變量名字 = 類型(縮寫) + 作用域(簡稱) + 確切含義名稱3)
21、三種賦值格式變量名:= 值; 變量名1: = 變量2; 變量名:= 過程或函數(shù)的調(diào)用;3. 類型常量1) 類型常量是全局變量并不是一個(gè)常量,它進(jìn)行了預(yù)初始化值。2) 定義Const 名字:類型 = 值;3
22、) 種類 簡單的類型常量 數(shù)組類型常量 記錄類型常量 集合類型常量 指針類型常量
23、160; 過程類型常量4. 數(shù)據(jù)類型 簡單類型(Simple) 有序類型(Ordinal) 整數(shù)(Integer) 字符(Character) 布爾(Boolean) 枚舉(Enumerated)
24、子域(SubRange) 實(shí)數(shù)(Real) 結(jié)構(gòu)類型(Structured) 集合(Set) 數(shù)組(Array) 記錄(Record) 文件(File) 類(Class) 類指針(Class Reference) 界面(Interface) 字符串類型(String)
25、160; 指針類型(Pointer) 過程類型(Procedural) 可變類型(Variant) 5. 用戶自定義類型 子域類型 Type 名稱 初值終值; &
26、#160; 枚舉類型 Type 名稱 (值1,值2,值3值N); 數(shù)組類型 Type 名稱 Array下標(biāo)定義of類型名
27、 Type 名稱 下標(biāo)定義1,下標(biāo)定義2下標(biāo)定義N of元素類型 或名稱 下標(biāo)定義1ofArray 下標(biāo)定義N of元素類型 集合類型
28、 Type 名稱 set of 元素類型 指針類型Type 名稱 結(jié)點(diǎn)類型 記錄類型 Type 名稱
29、 Record 域名1:類型; 域名1:類型;
30、60; 域名N:類型; end; 文件類型 Type 名稱 file of 元素類型 語句 簡單語句 X := Y + Z; / assignmentRandomize; / procedure c
31、all復(fù)合語句begin A := B; C := A * 2;end;end之前的最后一條語句末尾分號(hào)不是必需的,你可以寫成:begin A := B; C := A * 2end;賦值語句 在Pascal 語言中賦值語句用冒號(hào)-等號(hào)操作符“:=”, 條件語句If語句 對(duì)if-then型語句,僅當(dāng)條件滿足時(shí),語句才執(zhí)行;if CheckBox1.Checked then ShowMessage ('CheckBox1 is checked')對(duì)if-then-el
32、se型,if語句在兩條語句中選擇一條執(zhí)行if CheckBox2.Checked then ShowMessage ('CheckBox2 is checked') else ShowMessage ('CheckBox2 is NOT checked');要注意的是,不能在第一句之后、else 關(guān)鍵詞之前加分號(hào),否則編譯器將告知語法錯(cuò)誤。實(shí)際上,if-then-else 語句是單純的一條語句,因此不能在語句中間加分號(hào)。if 語句可以很復(fù)雜,句子中的條件部分可以是一系列條件(用a
33、nd、 or 、 not等布爾操作符聯(lián)接起來),if語句又可以嵌套另一個(gè)if語句begin / compound if statement if CheckBox1.Checked then if CheckBox2.Checked then ShowMessage ('CheckBox1 and 2 are checked') else ShowMessage (
34、'Only CheckBox1 is checked') else ShowMessage ( 'Checkbox1 is not checked, who cares for Checkbox2?')end;Case語句case語句包括用來選值的表達(dá)式、可能值序列或一個(gè)取值范圍。這些值應(yīng)該是常量,并且它們必須唯一,而且應(yīng)屬于有序類型。Case語句最后可以帶一個(gè)else 語句,當(dāng)沒有一個(gè)標(biāo)簽與選擇器的值一致時(shí),執(zhí)行else語句。下面是兩個(gè)簡單的例子:cas
35、e Number of 1: Text := 'One' 2: Text := 'Two' 3: Text := 'Three'end;case MyChar of '+' : Text := 'Plus sign' '-' : Text := 'Minus sign' '*', '/': Text := 'Multiplication or division'
36、160; '0'.'9': Text := 'Number' 'a'.'z': Text := 'Lowercase character' 'A'.'Z': Text := 'Uppercase character'else Text := 'Unknown character'end;Pascal語言中的循環(huán)其它編程語言中使用的循環(huán)語句,Pascal語言中都有,它們包括 for、 while 和 r
37、epeat 語句。如果你用過其他編程語言,你會(huì)發(fā)現(xiàn)Pascal中的循環(huán)語句沒什么特別的,因此這里我只作簡要的說明。For循環(huán) Pascal 中的for循環(huán)嚴(yán)格地建立在計(jì)數(shù)器基礎(chǔ)上,循環(huán)每執(zhí)行一次,計(jì)數(shù)器不是增加一個(gè)值就是減小一個(gè)值。下面是一個(gè)for語句的簡例,用來將前十個(gè)數(shù)加起來:var K, I: Integer;begin K := 0; for I := 1 to 10 do K := K + I;同樣的for語句可以用正好相反的計(jì)數(shù)器來寫:var K, I: Integer;begin
38、0; K := 0; for I := 10 downto 1 do K := K + I;Pascal 中的for循環(huán)語句其靈活性比其他語言小(它不能指定1之外的步長),不過簡單也容易理解。如果需判斷的條件比較復(fù)雜,或想自定義計(jì)數(shù)器,你可以用while語句或 repeat 語句,而不是for循環(huán)語句。注意:for循環(huán)計(jì)數(shù)器不必非是數(shù)字,它可以是任何有序類型的值,例如一個(gè)字符或一個(gè)枚舉類型值。 while語句和repeat語句 while-do 循環(huán)語句和 repeat-until 語句的不同點(diǎn)在于repeat 循環(huán)語句的代碼
39、至少要執(zhí)行一次。從下面的簡例很容易理解這一點(diǎn):while (I <= 100) and (J <= 100) dobegin / use I and J to compute something. I := I + 1; J := J + 1;end;repeat / use I and J to compute something. I := I + 1; J := J + 1;until (I > 100) or (J > 100);從上可見即使 I 或 J 的初始值大于100,repeat-u
40、ntil循環(huán)中的代碼也仍會(huì)執(zhí)行一次。注意:兩種循環(huán)另一個(gè)關(guān)鍵的不同點(diǎn)是,repeat-until 循環(huán)的條件是反向的條件,只要不滿足這個(gè)條件,循環(huán)就執(zhí)行;當(dāng)條件滿足時(shí),循環(huán)終止。這正好與while-do 循環(huán)相反,while-do 循環(huán)當(dāng)條件是真值時(shí)才執(zhí)行。為此,我不得不在上面代碼中用反向條件來獲得相同的結(jié)果。注意:用 Break 和 Continue 系統(tǒng)過程可以改變循環(huán)執(zhí)行的標(biāo)準(zhǔn)流程。Break 中斷循環(huán);Continue直接跳至循環(huán)測試句,或使計(jì)數(shù)器增加一個(gè)步長,然后繼續(xù)循環(huán)(除非條件為空或計(jì)數(shù)器達(dá)到最大值)。還有兩個(gè)系統(tǒng)過程 Exit 和 Halt,讓你立即從函數(shù)或過程中返回,或者終止
41、程序。With語句 with BirthDay do begin Year := 1995; Month := 2; Day := 14; end;關(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é)定cl
42、ass 類型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 語句 (異
43、常處理)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)
44、算符 (布爾)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 界面類別符rec
45、ord 類型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 語句wri
46、te 屬性類別符writeonly dispatch 界面類別符xor 運(yùn)算符 (布爾)優(yōu)先法則單目運(yùn)算符 (最高優(yōu)先級(jí)) 取變量或函數(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)先級(jí))= 判斷是否相等<> 判斷是否不相
47、等< 判斷是否小于> 判斷是否大于<= 判斷是否小于或等于,或是否是一個(gè)集合的子集>= 判斷是否大于或等于,或是否是一個(gè)集合的父集in 判斷是否是集合成員is 判斷對(duì)象是否類型兼容 (又一個(gè)RTTI運(yùn)算符)Boolean (ByteBool WordBool LongBool)CharIntegerShortInt -128127Byte 0255SmallInt -3276832767Word 065535LongInt LongWordInt64Interger CardinalAnsiCharWidChar#=Chr(),把數(shù)字轉(zhuǎn)化為字符,Ord為相反,把字符轉(zhuǎn)化
48、為數(shù)字#9 Tab鍵#10 換行#13 回車類型轉(zhuǎn)換Chr 將一個(gè)有序數(shù)據(jù)轉(zhuǎn)換為一個(gè)ANSI字符 Ord 將一個(gè)有序類型值轉(zhuǎn)換為它的序號(hào) Round 轉(zhuǎn)換一個(gè)實(shí)型值為四舍五入后的整型值 Trunc 轉(zhuǎn)換一個(gè)實(shí)型值為小數(shù)截?cái)嗪蟮恼椭?#160;Int 返回浮點(diǎn)數(shù)的整數(shù)部分 IntToStr 將數(shù)值轉(zhuǎn)換為字符串 IntToHex 將數(shù)值轉(zhuǎn)換為十六進(jìn)制數(shù)字符串 StrToInt 將字符串轉(zhuǎn)換為一個(gè)整型數(shù),如字符串不是一個(gè)合法的整型將引發(fā)異常 StrToIntDef 將字符串轉(zhuǎn)換為一個(gè)整數(shù),如字符串不合法返回一個(gè)缺省值
49、Val 將字符串轉(zhuǎn)換為一個(gè)數(shù)字(傳統(tǒng)Turbo Pascal例程用于向后兼容) Str 將數(shù)字轉(zhuǎn)換為格式化字符串(傳統(tǒng)Turbo Pascal例程用于向后兼容) StrPas 將零終止字符串轉(zhuǎn)換為Pascal類型字符串,在32位Delphi中這種類型轉(zhuǎn)換是自動(dòng)進(jìn)行的 StrPCopy 拷貝一個(gè)Pascal類型字符串到一個(gè)零終止字符串, 在32位Delphi中這種類型轉(zhuǎn)換是自動(dòng)進(jìn)行的 StrPLCopy 拷貝Pascal類型字符串的一部分到一個(gè)零終止字符串 FloatToDecimal 將一個(gè)浮點(diǎn)數(shù)轉(zhuǎn)換為包含指數(shù)、數(shù)字及符號(hào)的十進(jìn)制浮點(diǎn)記錄類型&
50、#160;FloatToStr 將浮點(diǎn)值轉(zhuǎn)換為缺省格式的字符串 FloatToStrF 將浮點(diǎn)值轉(zhuǎn)換為特定格式的字符串 FloatToText 使用特定格式,將一個(gè)浮點(diǎn)值拷貝到一個(gè)字符串緩沖區(qū) FloatToTextFmt 同上面例程,使用特定格式,將一個(gè)浮點(diǎn)值拷貝到一個(gè)字符串緩沖區(qū) StrToFloat 將一個(gè)Pascal字符串轉(zhuǎn)換為浮點(diǎn)數(shù) TextToFloat 將一個(gè)零終止字符串轉(zhuǎn)換為浮點(diǎn)數(shù) Dec 將例程中的參數(shù)值遞減1或一個(gè)特定的值,其中特定值可在第二個(gè)可選參數(shù)中定義 Inc 將例程中的參數(shù)值增加1或一個(gè)特定的值&
51、#160;Odd 如果參數(shù)為奇數(shù)返回真 Pred 根據(jù)參數(shù)在其數(shù)據(jù)類型定義中的序列,返回參數(shù)值的前驅(qū)值 Succ 返回參數(shù)值的后繼值 Ord 返回參數(shù)值在其數(shù)據(jù)類型值集合中的序號(hào) Low 返回參數(shù)對(duì)應(yīng)的有序數(shù)據(jù)類型的最小取值 High 返回參數(shù)對(duì)應(yīng)的有序數(shù)據(jù)類型的最大取值 實(shí)數(shù):SingleDoubleExtendedReal $REALCOMPATIBILITY ON據(jù)說不標(biāo)準(zhǔn),要兼容舊的格式使用這個(gè)宏CompCurrencyTDateTime = type Double為了后續(xù)使用或直接用于變量,需要給自定義類型命名。如果自定義一
52、個(gè)命名的類型,你必須將代碼放在特定的type區(qū),如下所示:最多的如定義類等。typeUppercase = 'A'.'Z'Temperatures = array 1.24 of Integer;Date = recordMonth: Byte;Day: Byte;Year: Integer;end;Colors = (Red, Yellow, Green, Cyan, Blue, Violet);Letters = set of Char;end;子界類型a.bab為有序類型枚舉類型typeColors = (Red, Yellow, Green);/園括弧括
53、起來的,在屬性列表中最多出現(xiàn)。end;只能有一個(gè)值CPP = enum集合類型type Letters = set of Char;var Letters1,Letters2etters;beginLetters1 := 'A'.'B'.'C'Letters2 := 'K'end;是什么什么的集合,可以有多個(gè)屬性。CPP = 多字段與或Font.style := fsBold, fsItalic; / two stylesFont.style :=Oldstyle + fsBold, fsItalic;數(shù)組類型typeMonthT
54、emps = array 1.24, 1.31 of Integer;YearTemps = array Jan.Dec of Integer;記錄類型typeDate = recordYear: Integer;Month: Byte;Day: Byte;end;類似 structure指針typePointerToInt = Integer;varP:IntegerlX:Integer;beginP := X; p = &x;X :=10; x = 10;P :=20; *p = 20;end;除了表示已分配內(nèi)存的地址外,指針還能通過New 例程在堆中動(dòng)態(tài)分配內(nèi)存,不過當(dāng)你不需要這
55、個(gè)指針時(shí),你也必須調(diào)用Dispose 例程釋放你動(dòng)態(tài)分配的內(nèi)存。P:=nil;Pointer 類型,如void *;實(shí)際上,Delphi 中必須使用指針的情況很少,這是Delphi開發(fā)環(huán)境一個(gè)誘人的優(yōu)點(diǎn)。文件類型typeIntFile = file of Integer;能打開一個(gè)與這個(gè)結(jié)構(gòu)相應(yīng)的物理文件、向文件中寫入整數(shù)、或者從文件中讀取當(dāng)前的值簡單語句:單行:X:= Y+Z;調(diào)用一個(gè)過程Randomize;復(fù)合語句begin end;賦值 :=表示關(guān)系運(yùn)算符,用于判斷是否相等用 c: =條件if 用and、 or 、 not等布爾操作符聯(lián)接起來的條件 thenstatement;elses
56、tatement;end;Case語句case Number of1: Text:='One'2: Text:='Two'else /default;Text:='Unknow'end;循環(huán) 循環(huán)條件為順序數(shù)for I:=1 to 10 dostatement;for I := 10 downto 1 do 遞減statement;while conditions dostatement;repeatstatement;until conditions;With語句beginwith BirthDay dobeginYear:=1999;Mont
57、h :=2;Day :=14;end;end;減少BirthDay.xxx 的代碼工作量,但現(xiàn)在的自動(dòng)完成比他效率高可以with多個(gè),同樣屬性的取最后一個(gè)的,容易出錯(cuò)。函數(shù)和過程procedure Hello;beginShowMessage ('Hello world!');end;調(diào)用:Hello;function Double (value: Integer) : Integer;beginDouble := value * 2; /函數(shù)名做返回值end;function Double2 (value: Integer) : Integer;beginResult :=
58、value * 2; /Result作返回值end;引用參數(shù)同C+中的(&xx)使用var關(guān)鍵字表示procedure Produ(var value:Integer);既做傳遞參數(shù),又把值返回給調(diào)用程序。procedure Produ(out value:Interger);用作返回。常量參數(shù)使用const開放數(shù)組參數(shù)function Sum (const A: array of Integer): Integer;varI: Integer;beginResult := 0;for I := Low(A) to High(A) doResult := Result + AI;end
59、;可以傳遞大小不定的數(shù)組類型變化的開放數(shù)組參數(shù)可以接收多種類型的數(shù)組參數(shù)function SumAll (const Args: array of const): Extended;調(diào)用協(xié)定fastcall 只要有可能,傳遞到CPU寄存器多達(dá)3個(gè),操作更快delphi3+ 缺省標(biāo)記win32 API是stdcall,win16 API是原始的Pascal調(diào)用和cdecl調(diào)用混合體方法:是一種特殊的函數(shù)或過程他與類這一數(shù)據(jù)類型相對(duì)應(yīng),每個(gè)事件都定義一個(gè)方法,通常是過程。forward 申明欲聲明一個(gè)過程或函數(shù),而且只給出它的名字和參數(shù),不列出其實(shí)現(xiàn)代碼,需要在句尾加forward 關(guān)鍵字:pro
60、cedure Hello; forward;可用來寫遞歸調(diào)用當(dāng)你在一個(gè)單元(關(guān)于單元的更多內(nèi)容見下一章)的interface 部分聲明一個(gè)過程或一個(gè)函數(shù)時(shí),它被認(rèn)為是一個(gè)forward聲明,即使沒有forward關(guān)鍵字也一樣。過程類型typeIntProc = procedure (var Num: Integer);IP: IntProc;beginIP := otherProcedure;函數(shù)重載 overload關(guān)鍵字function Min (A,B: Integer): Integer; overload;function Min (A,B: Int64): Int64; overl
61、oad;function Min (A,B: Single): Single; overload;function Min (A,B: Double): Double; overload;function Min (A,B: Extended): Extended; overload;確省參數(shù)procedure MessBox (Msg: string;Caption: string = 'Warning'Flags: LongInt = mb_OK or mb_IconHand);字符串ShortStringAnsiStringWideSting如果只簡單地用String定義
62、字符串,那么該字符串可能是短字符串也可能是ANSI長字符串,這取決于$H 編譯指令的值,$H+(確?。┐黹L字符串(ANSIString 類型)。長字符串是Delphi 庫中控件使用的字符串。SetLength (String1, 200);設(shè)置長度分配內(nèi)存類型轉(zhuǎn)換,PChar(String)SetWindowText (Handle, PChar (Label1.Caption);GetWindowText (Handle, PChar (S1), Length (S1);格式化字符串format ('First %d, Second %d', n1, n2);/集合d(de
63、cimal) 將整型值轉(zhuǎn)換為十進(jìn)制數(shù)字字符串x (hexadecimal) 將整型值轉(zhuǎn)換為十六進(jìn)制數(shù)字字符串p (pointer) 將指針值轉(zhuǎn)換為十六進(jìn)制數(shù)字字符串s (string) 拷貝字符串、字符、或字符指針值到一個(gè)輸出字符串e (exponential) 將浮點(diǎn)值轉(zhuǎn)換為指數(shù)表示的字符串f (floating point) 將浮點(diǎn)值轉(zhuǎn)換為浮點(diǎn)表示的字符串g (general) 使用浮點(diǎn)或指數(shù)將浮點(diǎn)值轉(zhuǎn)換為最短的十進(jìn)制字符串n (number) 將浮點(diǎn)值轉(zhuǎn)換為帶千位分隔符的浮點(diǎn)值m (money) 將浮點(diǎn)值轉(zhuǎn)換為現(xiàn)金數(shù)量表示的字符串,轉(zhuǎn)換結(jié)果取決于地域設(shè)置,詳見Delphi幫助文件的Cur
64、rency and date/time formatting variables主題內(nèi)存動(dòng)態(tài)數(shù)組Array1: array of Integer;SetLength(Array1, 100);下標(biāo)從0開始普通數(shù)組下標(biāo)可以隨便寫動(dòng)態(tài)數(shù)組不行,Length,Hight,Low函數(shù)了解動(dòng)態(tài)數(shù)組狀況for I := Low (Array1) to High (Array1) doArray1 I := I;windows相關(guān)typeTHandle = LongWord;外部聲明/ forward declarationfunction LineTo (DC: HDC; X, Y: Integer):
65、BOOL; stdcall;/ external declaration (instead of actual code)取代真實(shí)代碼function LineTo; external 'gdi32.dll' name 'LineTo'這段聲明表示函數(shù)LineTo 的代碼同名保存在GDI32.DLL 動(dòng)態(tài)鏈接庫中(最重要的Windows 系統(tǒng)庫之一)。實(shí)際應(yīng)用時(shí),外部聲明中的函數(shù)名與DLL中的函數(shù)名可以不同。與WindowsAPI對(duì)應(yīng)的聲明:BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam);function EnumWindows (l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術(shù)說明書樣本
- 整體廚房裝修設(shè)計(jì)承包范本
- 2024混凝土道路施工合同樣本
- 2024品牌代理經(jīng)營合同版
- 廣西壯族自治區(qū)七年級(jí)上學(xué)期語文期中測試試卷10套【附答案】
- 廣告設(shè)計(jì)制作合作方案
- 保健食品委托代理銷售協(xié)議書
- 設(shè)備維修承包合同2024年
- 2023年高考地理第一次模擬考試卷-(湖北B卷)(考試版)
- 2023年高考地理專題復(fù)習(xí)新題典題精練-洋流(解析版)
- 新產(chǎn)品試制流程管理辦法
- 通用橫版企業(yè)報(bào)價(jià)單模板
- 潛油泵及潛油泵加油機(jī)講義
- 物業(yè)服務(wù)公司各崗位規(guī)范用語
- 醫(yī)患溝通內(nèi)容要求記錄模板(入院、入院三日、術(shù)前、術(shù)后、出院)
- 航海學(xué)天文定位第四篇第6章天文定位
- 淺談深度教學(xué)中小學(xué)數(shù)學(xué)U型學(xué)習(xí)模式
- 物理電學(xué)暗箱專題30道
- 裝修公司員工勞動(dòng)合同
- 江西上饒鉛山汽車駕駛科目三考試線路
- 通過一起放火案件淺析放火案件的移交工作
評(píng)論
0/150
提交評(píng)論