Delphi 2010比以往的Delphi版本都要快栈顷,而且它保留了一些Delphi 7的特性购披,比如可以將舊的條形控件(componentbar)找回伯铣。但這同時(shí)也帶了相關(guān)的問題(比如在重啟Delphi 2010之后componentbar的位置看起來挪動(dòng)了),不過這只是細(xì)節(jié)問題事扭,相信在之后的修補(bǔ)中會(huì)解決這個(gè)問題斤寇。
1.工程文件結(jié)構(gòu)
源文件聯(lián)系著unit單元桶癣,delphi主模塊源文件格式為.dpr,其他模塊為.pas抡驼。一個(gè)完整程序由一個(gè).dpr和若干個(gè).pas文件組成鬼廓。
2. .dpr程序結(jié)構(gòu)
一個(gè).dpr由程序頭、[use從句]致盟、主程序塊組成碎税。一個(gè)典型工程文件如下
1 program Project;
2 {$APPTYPE CONSOLE}
3 uses
4 SysUnits;
5 begin
6
7 end.
程序頭指示所編寫程序名稱,良好的程序馏锡,.dpr代碼盡量少雷蹂,盡量將代碼分布在.pas中然后再在.dpr里調(diào)用。
在程序主文件使用到的所有.pas文件必須列在uses從句里杯道。
用begin和end包圍的一段代碼稱為一個(gè)代碼塊匪煌。工程文件含有一個(gè)主程序塊用于存放主程序代碼,工程文件中的全局標(biāo)識(shí)符必須聲明于begin之前。
3.單元文件結(jié)構(gòu)
程序的每個(gè)子模塊稱為一個(gè)單元萎庭,每個(gè)單元存儲(chǔ)在一個(gè).pas文件中霜医,一個(gè)文件對(duì)應(yīng)一個(gè)單元。單元文件后綴名.pas驳规,每個(gè).pas文件依次包括:unit單元名稱肴敛、Interface關(guān)鍵字、implementation吗购、[initialization]医男、[finalization]、關(guān)鍵字end捻勉。一個(gè)完整的.pas文件如下:
1 unit Unit1; //單元名稱
2
3 interface //interfae起始部分
4 uses ...
5
6 implementation //implementation起始處
7 uses.....
8
9 initialization //initialization部分起始處
10 .....
11
12 finalization //finalization部分起始處
13 .....
14
15 end. //單元文件結(jié)尾(end后必須以句號(hào)結(jié)尾)
unit名稱與.pas文件名稱一致镀梭,一個(gè).dpr中不能應(yīng)用兩個(gè)名稱相同的.pas.
interface至implementation之間的部分稱為interface部分。該部分可定義變量踱启、常量报账、例程等。并非只有此處才可以定義標(biāo)識(shí)符禽捆,但只有此處定義的標(biāo)識(shí)符才能被其他文件訪問(全局標(biāo)識(shí)符)笙什。此部分定義的例程只是一個(gè)原型,具體的實(shí)現(xiàn)部分則放在implementation中胚想。uses關(guān)鍵字緊接著interface之后,兩者間不允許有任何其他代碼芽隆。
implementation至initialization之間的部分可書寫例程的體代碼浊服,此處定義的比變量、常量胚吁、例程等牙躺,只能在本implementation單元使用,interface部分和其他單元無法使用腕扶。
initialization至finalization之間的部分可選孽拷,此部分的代碼在程序啟動(dòng)時(shí)運(yùn)行,若多個(gè)單元中都包含該部分半抱,則按照工程文件uses順序執(zhí)行脓恕。
finalization部分可有可無,僅當(dāng)initialization存在時(shí)才可使用此部分窿侈。程序退出時(shí)使用此部分代碼炼幔,除非程序由Halt強(qiáng)行退出。當(dāng)多個(gè)單元都存在此部分史简,運(yùn)行順序與initialization相反乃秀。
4. 單元語法與uses從句
5. delphi的數(shù)據(jù)類型
簡單類型包括:整形、字符型、布爾型跺讯、枚舉枢贿、子界類型、實(shí)型刀脏。除實(shí)型以外萨咕,都是有序類型,即每個(gè)值在值域中都有一個(gè)序數(shù)火本。
6. 整型
7.實(shí)型
8. 字符類型
包括ansiChar和WideChar,ansiChar使用一個(gè)字節(jié)表示一個(gè)字符危队,WideChar則用兩個(gè)字節(jié)表示一個(gè)字符。二者之間不能相互賦值钙畔。
9. 布爾型
用于判斷真假茫陆,只有true和false兩種值。
delphi內(nèi)置4中布爾類型:Boolean/ByteBool/WordBool/LongBool擎析,內(nèi)存中分別占1簿盅、1、2揍魂、4個(gè)字節(jié)桨醋。
10.枚舉類型
type
typeName = (標(biāo)識(shí)符1,標(biāo)識(shí)符2现斋,標(biāo)識(shí)符3.喜最。。庄蹋。);
11.子界類型
type
子界類型名 = 下界..上界
12.集合
type
set1 = set of 有序值得集合
例子:
type
set1 = set of 0..10;
type
set2 = set of (red,green,blue);
type
set3 = set of byte;
13.數(shù)組
靜態(tài):
一維:
type
myarr = Array[3..5] of integer //序號(hào)是3瞬内、4、5值為integer類型
多維:
type
myarr = Array[1..3] of Array[3..5] of integer;
或
type
myarr = Array[1..3,3..5] of integer;
動(dòng)態(tài):
type
dmyarr = array of char;
var
dal:dmyarr;
14.記錄類型
type
trec = record
mem1:char; //mem1繼承 char類; char聲明對(duì)象mem1
mem2:integer;
...
end;
15.字符串類型
16.指針類型
指針的聲明:
var ansiStr :^AnsiString;
或先聲明類型在聲明變量:
type pansiStr = ^AnsiString;
var ansiStr:pansiStr;
指針的賦值:
方式有二限书,即將另一指針變量值賦給該指針變量虫蝶,此兩個(gè)變量指向同一個(gè)地址;或者將某個(gè)變量的地址賦給該變量倦西。
@取址符 如@ansiStr
^取值符 如ansiStr^
17. 變體類型
variant
18.運(yùn)算符
有序類型運(yùn)算符:
ord:返回有序值在值域中的序數(shù)
如:ord('A') = 65
pred:返回指定值的前一個(gè)值
pred('B') = A
succ:返回指定值的下一個(gè)值
succ('A') = B
high:返回變量能夠表示的最大值或某類型的上界
high(byte) = 255
low:與high相反
數(shù)學(xué)運(yùn)算符:
+ 加
- 減
* 乘
/ 除
div 整除
mod 求余
邏輯運(yùn)算符:
not 反
and 且
or 或
xor 異或
位運(yùn)算符:
not 按位取反
and 按位取且
or 按位取或
xor 按位取異或
shl 左移
shr 右移
字符串運(yùn)算符:
+ 將字符串連接
集合運(yùn)算符:
指針運(yùn)算符:
關(guān)系運(yùn)算符:
19.條件語句
if語句
1 if <條件表達(dá)式> then
2 <語句1>
3 else
4 <語句2>;
20.選擇語句
1 Case 選擇表達(dá)式 of
2 常量1:語句1;
3 ...
4 常量n:語句n;
5 Else
6 ...
7 End;
21.循環(huán)語句
- while
1 While 條件表達(dá)式 do
2 循環(huán)語句;
例:
while i < n do
begin
sum := sum+i;
i := i+1;
end;
2.repeat
repeat 循環(huán)體
until 條件表達(dá)式
例:
repeat
i := i+1;
sum := sum+i;
until i = n;
3 . for
for 計(jì)數(shù)器 := 初值 to/downto 終值 do
循環(huán)體
例:
for i := 1 to/downto n do
writeln('hello delphi');
4.for ... in
for v in set do
循環(huán)體
例:
var
myset :set of AnsiChar;
ch : AnsiChar;
begin
myset := ['1','2'];
for ch in myset do
writeln(ch);
end.
for in還可以遍歷數(shù)組能真、字符串、類扰柠、接口粉铐、記錄。
22. continue和break語句
23. 程序終止
exit:退出當(dāng)前正在執(zhí)行的程序塊耻矮,不會(huì)退出整個(gè)程序秦躯,除非將其用在了主程序塊(.dpr文件中)中。
procedure Mi;
begin
exit;
end;
或返回一個(gè)參數(shù)裆装,該參數(shù)類型和函數(shù)返回類型一致
function Mi:string
begin
exit('str');
end;
Halt:引發(fā)異常中斷并通過中斷直接退出整個(gè)程序踱承。
procedure Mi;
begin
Halt;
end;
terminate:delphi窗體程序中含有一個(gè)全局程序?qū)ο螅ㄒ话闶莂pplication)倡缠,其中的terminate方法可在窗體程序的任何地方使程序正常中斷并退出。
procedure TForm1.Button1Click(sender:TObject);
begin
Application.terminate;
end;