delphi 6集成開發(fā)環(huán)境Delphi編程語言是以Pascal為基礎(chǔ)具_(dá)第1頁
delphi 6集成開發(fā)環(huán)境Delphi編程語言是以Pascal為基礎(chǔ)具_(dá)第2頁
delphi 6集成開發(fā)環(huán)境Delphi編程語言是以Pascal為基礎(chǔ)具_(dá)第3頁
delphi 6集成開發(fā)環(huán)境Delphi編程語言是以Pascal為基礎(chǔ)具_(dá)第4頁
delphi 6集成開發(fā)環(huán)境Delphi編程語言是以Pascal為基礎(chǔ)具_(dá)第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

2章ObjectPascal(.EXEDelphi的可視化元素放在一邊,將主要討論ObjectPascal的主要特點(diǎn),Pascal體和框與用戶進(jìn)行信息交互,實(shí)現(xiàn)一定的功能。如公司的Office系列軟件和正在使用的Delphi6.0等??刂婆_程序介紹ObjectPascal語言。序,以及ObjectPascal程序的一般結(jié)構(gòu)有一個比較直觀的認(rèn)識。wrin('您輸入的是激活菜單項(xiàng)File/SaveAll將工程文件保存至 在下面介紹),因?yàn)镾ysUtils單元在這個例子中用不到。序最后的readln語句是為了鎖定窗口,否則輸出結(jié)果將很快。Pascal的語法。如上例中的第二句{$APPTYPECONSOLE}。(*(*這是的*)*$&*#‘()[]{,}.^?;+:/@<=> []與(..)分別對應(yīng),{}與(**)分別對應(yīng)。含義完全相同,可以相互替代。(Simplenc(real

2-1為0時,可以認(rèn)為是true。SundayThours=0..23; 后面有{$R*.DFM}字樣表示范圍檢查打開,否則您可以在O plierOptions中674888法。在ObjectPascal中,通常用一對單引號來把字符串括起來,例如'AString'。制,同時與null結(jié)束的字符串相兼容。么就總是ShortString,例如:實(shí)際上,AnsiString類型是一個指向在堆棧中的字符串結(jié)構(gòu)的指針。string(255+1=256并且彼此能相互兼容,不過WideStringAnsiString的不同主要在三個方面:的利用上不如AnsiString有效。PChar所指向的內(nèi)存進(jìn)行分配。PChar字符串的理論最大長度是4GB。s1:= s2:=s1:=s1+s2; s1:='s2:=個其它常用的運(yùn)算符和Delphi的過程或函數(shù):接口類型。如圖2-2所示。

2-2TInt=0..255; T1=setofTInt; TChar=setof('a','b','c');集合T1中是否有200:if200inT1:Include(T1,256);//在集合中增加256;Exclude(CharSet,'a');//在集合中刪除'a';Include()Exclude()Include()和個變量,TDou[1]表示第一個變量。也可以把數(shù)組定義成類型:TDou:fori:=1to25doTDou[i]:=…forCol:=1to25forRow:=1to25doName:string[20];Salary:Double;Position:string[20];YearHired:=1993;Salary:=2000.00(Field(file(classrfae wrin('b=',pt^); //b:=p^; wrin('b=',b); wri

本一致,但是它只能表達(dá)與OLE自動化操作相兼容的數(shù)據(jù)類型。這就是引入Variant類型目的。括另一個Variant數(shù)組)。例如,假定要把一個字符類型的值賦給一個byte類型的變量,相應(yīng)代碼如下所示:

c:=b:=cc:= 只有當(dāng)兩個變量的數(shù)據(jù)長度一樣時,才能對變量進(jìn)行強(qiáng)制類型轉(zhuǎn)換。 Oeraor運(yùn)算符跟在C語言中的運(yùn)算符相同,所以在C語言中的表達(dá)式if(x==y在ObjectPascal中寫成ifx=y。值。Delphi的不等于運(yùn)算符是<>,相當(dāng)于C語言中的!=運(yùn)算符。ifAandBwhileAorB運(yùn)算符,它同樣也經(jīng)常作為if語句的一部分,例如:ifnotA2-4===>>><<<<<<!2-5算術(shù)運(yùn)算符加+++減---乘***/////%無無^符對兩個整型數(shù)進(jìn)行除法運(yùn)算,ObjectPascal編譯器將提示出錯了,請看下面的代碼:

Freal; Pascaldiv運(yùn)算符更快、更有效。與或&~|^無shl和shrC語言中的<<和>>運(yùn)算符,表2-6列出這些按位運(yùn)算符。11運(yùn)算,這是經(jīng)過優(yōu)化的代碼,和減1操作:2-7加減運(yùn)算符加無減無+-^= + - * = Pi=Answer=342;="角度來考慮,盡量不要使用goto語句。ifAthenifAthenBelseif語句會計(jì)算一個表達(dá)式,并根據(jù)計(jì)算結(jié)果決定程序流程。if保留字后跟隨一個生成部分,表達(dá)式為False時自動跳到下一行程序。end保留字來強(qiáng)迫else部分屬于某一級的if語句。i:=i:=untili=10;會被計(jì)算,這意味著repeat語句至少會被執(zhí)行一次。環(huán),執(zhí)行while語句后面的程序。i:=i:=wrin(i);i:fori:=1to5do話,選用repeat..until語句比較合適;當(dāng)用戶認(rèn)為程序可能一次都不執(zhí)行的話,最好選用while..do語句。if語句會計(jì)算一個表達(dá)式,并根據(jù)計(jì)算結(jié)果決定程序流程。在上文的例程中,根據(jù)為False時自動跳到下一行程序。強(qiáng)迫else部分屬于某一級的if語句。

例子在執(zhí)行第二次循環(huán)時continue()后的代碼不執(zhí)行:fori:=1to3doifi=2thencontinue;wrin(i,'aftercontinue');這樣可以簡化代碼的輸入量。With語句的形式如下:withobjdoName:string[20];Salary:Double;Position:string[20];NameProcedureName是過程名,是有效的標(biāo)識符。ParameterList為過程的參數(shù)列表,需要指LocalDeclarationsstatements都是可選部分,可以不要。作。注意這里與CC++不一樣,把一個值賦給Result,函數(shù)并不會結(jié)束。Exit//Result:=True;);//ifOutputNum(123.456789,-3)=falsethenWrin('輸出失敗。');Falseexit函數(shù)立刻退出OutputNum函數(shù)。參前加上保留字var。例如:Nnmber初始值的10倍。PInteger=^Integer;//定義指針類型);//);//Wrin('i',i);P3(@i將I加3Wrin('i':,i);i:i:i:值為2,這時使用的是參數(shù)傳遞。;//;//Result://end;//;//保留字forword。下文的例子是一個遞歸調(diào)用的典型例子:ifA>0test2(A);{置說明,調(diào)用未執(zhí)行的過程Test2}wrin(A);A:=Adiv2;ifA>0);{Alpha:=15;{給Alpha賦初值}2-3程,則可以在Unit2uses子句中加入Unit1,并使用下面的說明:環(huán)境中,普通類的名稱一般以T開頭,異常類的名稱一般以E開頭。件”菜單項(xiàng)中的菜單命令,可以將標(biāo)識號命名為FileOpen、FileClose等。使用Windows,而不要使用WindowCollection。Coad和Yourdon給出了下面直觀的定義:=+++2-4一個域就像是在Pascal記錄中一個域,在C++中它被稱為數(shù)據(jù)成員。派生出一個新類。TObject類是在System單元中定義的。個單元文件中,則要在uses語句中包括被的類所在的單元名稱。automated應(yīng)的內(nèi)存資源等。此外,還可以調(diào)用過程釋放對象占用的資源。也就是使用register指令字方式。函數(shù)調(diào)用約定方式,也就是使用register指令字方式。nil,則會自動調(diào)用析構(gòu)函數(shù)。通常在運(yùn)行時創(chuàng)建的對象應(yīng)該調(diào)用過程來代替析構(gòu)函數(shù)。因?yàn)槿绻麑ο鬀]有被初始化,則調(diào)用析構(gòu)函數(shù)時就會出錯,而調(diào)用過程就沒有問題。 class////PublicSalary:integer薪金);//

destructorDestroy;override;;//;//;//Wrin(':',Name,':',GetAge,'住址:',AddressName));//Wrin('顧客類的構(gòu)造函數(shù)。');;//Wrin(為:',Name,'的顧客類對象被刪除。');inheritedDestroy;//調(diào)用父類的析構(gòu)函數(shù)

;//;//;//::21部門:部薪水::46住址:北一路例程中的T類默認(rèn)從TObject類派生而來,然后它又派生出兩個子類:性、Name屬性、GetAge函數(shù)和SetAge過程等。eNeaaSetSalary TFruitclass A1:TApple;//一個蘋果類的變量A1:=ProcedureIamAVitual;virtual;存要少,但執(zhí)行起來較慢,因?yàn)橛锌赡芤阶嫦葘ο蟮腄MT中查找動態(tài)方法。的消息。用消息處理方法來響應(yīng)Windows的消息,這樣就不用直接來調(diào)用它。ObjectPascalOOP的多態(tài)性概念。通過覆蓋使一方法在不同的派生類間表現(xiàn)出不同的行為。ObjectPascal中能被覆蓋的方法是在時被標(biāo)識為virtual如,能用下面的代碼覆蓋IAmAVirtualIAmADynamic方法:ProcedureIamAVitual;override;ProcedureA;

指針。Self由編譯器作為一個隱含參數(shù)傳遞給方法。 classprocedureT.Infor;//顯示調(diào)用的是T

;//一個人類的變P1.Infor;//調(diào)用的是T P1.Infor;//調(diào)用的是T classendendWrin(

;//一個人類的變P1:= P1.Infor;//調(diào)用的是T P1.Infor;//調(diào)用的是TCustomer類的 E1.Infor;//調(diào)用的是TEmployee類的Infor 也把這兩個運(yùn)算符稱為運(yùn)行時類型信息(RTTI:runtimetypeinformation)運(yùn)算符。果對象為nil,返回值則為False。objectas class//;//

;//一個人類的變P1.Name:=';ifP1isTEmployeethen(P1asTEmployee).Infor; P1.Name:=';ifP1isTEmployeethen(P1asTEmployee).Infor; ifE1isTEmployeethen(E1asTEmployee).Infor; :;部門名稱:人事部:;部門名稱:P1TCustomer類的對象,使用了is運(yùn)算符來進(jìn)行判斷。 DeptName屬性和調(diào)用Infor過程。TEmployeeclassNamestring;;//

E1:= 字段、屬性和普通方法,但是可以通過Self調(diào)用構(gòu)造函數(shù)和其它類方法。類varAnyObj:SomeClass;

className:string;//DeptName:string;//部門名稱procedureInfor;//顯示職員信息

fori:=0to1do;////(Employee[I]asTEmployee).Name:='';(Employee[I]asTEmployee).Infor;:部門名稱:人事unitUnit1; uses{元的名稱必須和文件名相匹配。例如,如果有一個文件名為A1unit語句可能是:interface部分,在unit語句后的源代碼必須是interface,而不能有過程體和函數(shù)體。interface語句應(yīng)當(dāng)只有一個單詞且在一行:{在這里進(jìn)行局部把另一個留在interface部分,這樣就能解決問題。下面是TObject的定義: procedureCleanupInstance;classfunctionClassParent:TClass;classfunctionClassInfo:pointer;classfunctionMethodName(address:pointer):ShortString;functionFieldAddress(constName:ShortString):pointer;functionGetInterface(constIID:TGUID;outobj):Boolean;classfunctionGetInterfaceTable:PinterfaceTable;procedureAfterConstruction;virtual;procedureBeforeDestruction;virtual;classfunctionNewInstance:T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論