初見Delphi

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ù)類型

dephi.jpg

簡單類型包括:整形、字符型、布爾型跺讯、枚舉枢贿、子界類型、實(shí)型刀脏。除實(shí)型以外萨咕,都是有序類型,即每個(gè)值在值域中都有一個(gè)序數(shù)火本。

6. 整型

dephi2.jpg

7.實(shí)型

dephi3.jpg

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.字符串類型

dephi4.jpg

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)算符:

dephi5.jpg

指針運(yùn)算符:

dephi6.jpg

關(guān)系運(yùn)算符:

dephi7.jpg

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)語句

  1. 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;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茎活,一起剝皮案震驚了整個(gè)濱河市昙沦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌载荔,老刑警劉巖盾饮,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異懒熙,居然都是意外死亡丘损,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門工扎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徘钥,“玉大人,你說我怎么就攤上這事肢娘〕蚀。” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵橱健,是天一觀的道長而钞。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任皆警,我火速辦了婚禮,結(jié)果婚禮上官疲,老公的妹妹穿的比我還像新娘。我一直安慰自己亮隙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布垢夹。 她就那樣靜靜地躺著溢吻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪果元。 梳的紋絲不亂的頭發(fā)上促王,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音而晒,去河邊找鬼蝇狼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛倡怎,可吹牛的內(nèi)容都是我干的迅耘。 我是一名探鬼主播贱枣,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼颤专!你這毒婦竟也來了纽哥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤栖秕,失蹤者是張志新(化名)和其女友劉穎春塌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體簇捍,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡只壳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了暑塑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吼句。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖梯投,靈堂內(nèi)的尸體忽然破棺而出命辖,到底是詐尸還是另有隱情,我是刑警寧澤分蓖,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布尔艇,位于F島的核電站,受9級(jí)特大地震影響么鹤,放射性物質(zhì)發(fā)生泄漏终娃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一蒸甜、第九天 我趴在偏房一處隱蔽的房頂上張望棠耕。 院中可真熱鬧,春花似錦柠新、人聲如沸窍荧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蕊退。三九已至,卻和暖如春憔恳,著一層夾襖步出監(jiān)牢的瞬間瓤荔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國打工钥组, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留输硝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓程梦,卻偏偏與公主長得像点把,于是被迫代替她去往敵國和親橘荠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理愉粤,服務(wù)發(fā)現(xiàn)砾医,斷路器,智...
    卡卡羅2017閱讀 134,699評(píng)論 18 139
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 11,004評(píng)論 6 13
  • 很實(shí)用的編程英語詞庫衣厘,共收錄一千五百余條詞匯如蚜。 第一部分: application 應(yīng)用程式 應(yīng)用、應(yīng)用程序app...
    春天的蜜蜂閱讀 1,365評(píng)論 0 22
  • 我知道一定是我不夠好影暴,所以你才離開我错邦。這句話聽著怎么這么矯情呢。 就像上一秒我以為“任性”是褒義詞:對(duì)固有的常規(guī)和...
    小香鳳閱讀 399評(píng)論 0 1
  • 教學(xué)與藝術(shù)的思考 “教學(xué)是一門遺憾的藝術(shù)”型宙,這句話撬呢,我們耳熟能詳。很多老師在觀課議課或反思教學(xué)時(shí)經(jīng)常引用它妆兑,這說明...
    百無一是閱讀 207評(píng)論 0 2