版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Delhpi-高級程序設計第一頁,共41頁。前言
關于課程關于教材關于授課者關于聽課者關于教學過程關于考核辦法課時安排與教學方法:總課時:30學時 周學時:3學分:3講課:24學時實驗:6學時 學生自補:10~20學時考試:理論考試授課內容:1、 面向對象編程與Delphi7.0基礎2、 Delphi常量、變量與數據類型3、 Delphi運算符與表達式4、 Delphi語句5、 Delphi函數與過程6、 Delphi界面設計7、 Delphi輸入與輸出8、 Delphi數據庫編程9、 Delphi技巧與提高OO技術的層次結構(b)(a)超類類1類2…對象1對象2…實例1實例2…Class<類名>[:<父類名>]{[Private:<私有數據><私有操作>]Public:<私有數據><私有操作>}第二頁,共41頁。面向對象技術概述1.11980年Xerox公司首次推出面向對象語言SMALLTALK-80;1.2當前,面向對象(object-oriented,OO)技術已經發(fā)展成為軟件開發(fā)領域的主流技術。OO技術核心概念是對象,認為客觀世界中的任何事物在一定前提下都可看作對象。一個對象包括從所研究事物抽取得到的相關屬性數據以及相應于屬性數據的操作行為,即對象是由一組數據和與該組數據相關的操作構成的封裝體;也可看作為具有一定屬性、方法和事件的實體。賦予對象屬性以具體值就得到了該對象的一個實例。對一組相似對象進行抽象就得到了該組對象的類,它描述了該組對象共同的屬性和操作。把相似的類看作對象再進行抽象便得到該組類的超類。第一講面向對象技術
與Delphi7.0基礎第三頁,共41頁。1.3技術具有如下優(yōu)點:繼承性父類具有的數據和操作可被子類繼承,從而降低數據冗余;封裝性對象封裝數據及其操作,用戶不必了解對象細節(jié),增強了系統(tǒng)的可維護性;多態(tài)性即同名多語義,系統(tǒng)依據具體情況區(qū)別執(zhí)行,可用性好;模塊性對象是獨立的實體,彼此間只能通過消息發(fā)生聯(lián)系,可重用性好、利用率高。1.4面向對象編程較傳統(tǒng)面向過程編程,最主要的區(qū)別在于它的“事件驅動、消息觸發(fā)”模式,即代碼不再按預定的路徑執(zhí)行,而是以事件順序決定代碼執(zhí)行順序。2.Delphi7.0基礎2.1.簡介Delphi是Borland(Inprise)公司基于Pascal語言推出的面向對象、可視化程序開發(fā)工具;既具有C++的強大功能,又具有VisualBasic簡單易學的特點;在數據庫系統(tǒng)開發(fā)方面性能尤為突出。完全支持MicroSoft.NET框架,是基于Windows平臺的跨平臺開發(fā)工具。第四頁,共41頁。Delphi7.0開發(fā)環(huán)境具有很強的集成性和智能性特征,其代碼編輯器能夠自動提示對象的屬性、方法、事件以及函數的參數;窗體和組件(VB稱控件)是常見對象,對象的方法表現(xiàn)為對象本身包含的函數與過程;Delphi常見的三種文件類型:工程文件*.dpr、窗體文件*.dfm、單元文件*.pas,其中單元文件和工程文件的主名不能相同;單元頭標明單元文件名稱,由關鍵字unit標識;接口部由關鍵字interface標識,用于聲明類型、常量、變量、函數與過程等,其信息可以被本單元和其他單元程序調用;執(zhí)行部定義在接口部聲明過的函數與過程代碼,也可包含本單元以外不被其他單元調用的常量與變量;初始部用于單元初始化,一般用于內存分配;結束部對應于初始部,按堆棧序列進行操作。第五頁,共41頁。unitp1;{單元頭}Interface{接口部}Uses{接口部之單元引用聲明}Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;Type{接口部之類型聲明}MyExcept=class(Exception)end;typeTForm1=class(TForm)Button1:TButton;Label1:TLabel;Edit1:TEdit;Button2:TButton;Button3:TButton;procedureButton1Click(Sender:TObject);procedureFormCreate(Sender:TObject);procedureEdit1KeyPress(Sender:TObject;varKey:Char);private{Privatedeclarations}public{Publicdeclarations}end;var{接口部之變量引用聲明}Form1:TForm1;implementation{執(zhí)行部}{$R*.dfm}{編譯器指令,用于查找資源}procedureTForm1.Button1Click(Sender:TObject);beginclose;end;procedureTForm1.Edit1KeyPress(Sender:TObject;varKey:Char);constMyPass='ZJH';beginifkey=#13thenbegin……end;end;end.{初始部}{結束部}第六頁,共41頁。Delphi程序開發(fā)一般包括設計、調試和運行三個階段,其調試階段可能的錯誤類型包括:語法錯誤、運行錯誤和邏輯錯誤三種類型;程序調試包括運行到光標(F4)、運行到斷點(F9)、步入(F7)、步越(F8)以及設置輸出信息等方法,其技巧與能力注意在實踐中培養(yǎng);2.2.運行錯誤與異常處理異常處理對增強程序的健壯性意義重大;Delphi的運行錯誤是其代碼執(zhí)行過程中產生的事件,而異常則是該事件創(chuàng)建的對象;Delphi異常對象的基類是Exception,在單元SysUtils中定義;異常處理包括結構化異常處理和用戶自定義異常處理兩大類,具體方法見案例。第七頁,共41頁。第二講Delphi常量、變量與數據類型2.0.引例:“一元二次方程萬能求解器設計與實現(xiàn)
2.1基本數據類型整型類型所占字節(jié)數數值范圍Integer4-2147483648~2147483647shortint1-128~127smallint2-32768~32767longint4-2147483648~2147483647int648-263~263byte1-128~127word2-32768~32767longword40~4294967295cardinal40~4294967295第八頁,共41頁。第二講Delphi常量、變量與數據類型2.1基本數據類型實型類型所占字節(jié)數數值范圍single41.5×10-39~3.4×1038real85.0×10-324~1.7×10308double85.0×10-324~1.7×10308currency8-922337203685477.5808~extended103.6×10-4951~1.1×104932comp8-263+1~263+1real4862.9×10-9~1.7×1038第九頁,共41頁。第二講Delphi常量、變量與數據類型2.1基本數據類型字符與字符串型類型所占字節(jié)數數值范圍char1擴展ANSI字符集AnsiChar1擴展ANSI字符集WideChar2Unicode字符集String231個字符需4~2GB內存Shortstring255個字符集需2~256B內存AnsiString231個字符需4~2GB內存WideString230個字符需4~2GB內存第十頁,共41頁。第二講Delphi常量、變量與數據類型2.1基本數據類型布爾型類型所占字節(jié)數數值范圍Boolean10/F,1/TByteBool10/F,1/TWideBool20/F,1/TLongBool40/F,1/T第十一頁,共41頁。第二講Delphi常量、變量與數據類型2.1基本數據類型強制類型
轉換函數函數數值范圍IntTostr(value:integer)
IntTostr(value:int64)將整型與長整型轉換為字符串Floattostr(value:extended)實型轉換為字符串Strtofloat(consts:string)將字符串轉換為實型Strtoint(consts:string)
strtoint64(consts:string)將字符串轉換為整型或長整型第十二頁,共41頁。第二講Delphi常量、變量與數據類型2.2標識符標識符不能超過255個字符,其作用域分為過程(函數)級、單元級和程序級三個層次。標識符被重定義后,遵循“縣官不如縣管”原則第十三頁,共41頁。第二講Delphi常量、變量與數據類型2.3高級數據類型高級數據類型類型語法示例備注枚舉型Type
month=(Jan,Feb,Mar,Apr…);
VarMyM:Month;相應函數:Ord()、Pred()、Succ()、Low()和High();次序由0開始子界型Type
LowerChar=‘a’..’z’;Var
MyChar:Lowerchar集合型Type
<集合類型名>=setof<基類型>基類型必須是順序類型中的字符型、邏輯型、枚舉型和子界型;如其基類型有n個元素,則集合變量有2n個值靜態(tài)數組Type
Mydata1=array[1..5]ofreal;
Mydata2=array[1..5,1..6]ofint64;第十四頁,共41頁。第二講Delphi常量、變量與數據類型2.3高級數據類型高級數據類型類型語法示例備注動態(tài)數組Type
Mydata1=arrayofreal;
Mydata2=arrayofarrayofint64;
var
data1:Mydata1;
data2:Mydata2;
setlength(data1,3)
setlength(data2,2,3)動態(tài)數組下標最小值為0setlength(data1,3)為data1[0],data1[1],data1[2]允許創(chuàng)建第一維固定,其他維不固定的多維動態(tài)數組記錄型Type
MyStudent=record
ID:string[6];
Name:string[8];
end;Var
MyPerson:MyStudent;WithMypersondo
begin
id:=‘951708’;
Name:=’張建華’;
end;
MyPerson.ID:=‘951708’;第十五頁,共41頁。第二講Delphi常量、變量與數據類型2.3高級數據類型高級數據類型類型語法示例備注函數有類型指針變量Type
MyPoint=^integer;
var
P1:MyPoint;VarP1:^integerP1=@MyAge;P1^=32;New()和dispose():前者分配由指針所指類型決定大小的內存單元給動態(tài)指針變量,并把該區(qū)域的初始地址賦給指針變量;后者刪除前者創(chuàng)建的動態(tài)變量,并釋放相應的內存空間。Getmen()和freemen():前者為動態(tài)變量分配一塊制定大小的內存空間,并把該區(qū)域的初始地址賦給指針變量;后者刪除前者創(chuàng)建的動態(tài)變量,并釋放相應的內存空間。字符指針類型Var
P:Pchar;
s:string;
begin
s:=‘zjh’:
p:=@s;
end;無類型指針變量可以指向任何類型變量,但要引用無類型指針變量所指向的變量,必須先將其轉換為確定的類型。無類型指針變量Var
MyPerson:Pointer;第十六頁,共41頁。第三講運算符與表達式3.1常見運算符算術運算符類型意義備注-取負單目運算符+取正+加法運算雙目運算符7Div8=07Mod8=7-減法運算*乘法運算/除法運算Div整除運算Mod求模運算第十七頁,共41頁。第三講運算符與表達式3.1常見運算符關系運算符類型意義備注>大于運算結果為邏輯值<小于>=大于等于<=小于等于=等于<>不等邏輯運算符not求反Truexorfalse=trueFalsexortrue=trueTruexortrue=falseFalsexorfalse=falseAnd與運算Or或運算xor異或運算第十八頁,共41頁。第三講運算符與表達式3.1常見運算符位運算符類型意義目數備注not按位求反單目運算運算對象與運算結果均為整數,按二進制位運算。移位運算,移出的空位一律補0。and按位與雙目運算or按位或xor按位異或shl左移shr右移字符串
運算符+連字符運算符的優(yōu)先級:@,not>
,or,xor>=,<>,<,>,<=,>=,in,is*,/,div/mod,and,shl,shr,as>+,-雙目運算符的結合性是從左到右,單目運算符的結合性是從右到左第十九頁,共41頁。第三講運算符與表達式3.2表達式用運算符將操作數連接而成的式子,即表達式。表達式的類型由運算符號和操作數的類型決定。常見的表達式類型有:算術表達式,關系表達式,邏輯表達式,位表達式,字符串表達式和混和表達式等。計算表達式,首先需要確定運算符號的功能,而后確定計算的順序。第二十頁,共41頁。第四講Delphi語句4.1順序語句類型示例備注空語句;賦值語句x;=2;注釋語句{低估}(*dsg*)4.2判斷語句類型示例類型1If<條件>then[<語句1>][Else<語句2>];類型2Case<>of
<整常型表達式1>:<語句1>;
<整常型表達式n>:<語句n>;
else<語句n+1>;
end;第二十一頁,共41頁。第四講Delphi語句4.3循環(huán)語句類型示例備注FOR語句For<循環(huán)變量>=<初值>to<終值>do
[<循環(huán)體>];Break語句可以跳出整個循環(huán),執(zhí)行<循環(huán)體>之后的語句;
Continue語句可以跳出本輪循環(huán),判斷條件是否成立,再決定是否開始新一輪循環(huán)。For<循環(huán)變量>=<初值>downto<終值>do
[<循環(huán)體>];WHILE語句While<條件>do
[<循環(huán)替>];Repeat語句Repeat
[<循環(huán)體>]
until<條件>;第二十二頁,共41頁。第五講過程與函數5.1過程(procedure):無返回值的子程序。標準過程類型語法消息對話框過程Showmessage(<信息內容>);ShowmessageFmt(<信息內容>,<參數值組>);字符串處理過程AppendStr(s1,s2);Delete(s,n,m);Insert(source,s,n);Val(s,v,code);Str(v,s)日期,時間
轉換函數DecodeDate(date,year,month,day);DecodeTime(time,hour,min,sec,msec);隨機過程Randomize;第二十三頁,共41頁。第五講過程與函數5.1過程(procedure):無返回值的子程序。類型語法事件過程當用戶對某個對象發(fā)出動作時,觸發(fā)事件過程。自定義過程Procedure<過程名>[(<形參列表>)]
[<局部變量聲明>]
begin
[<語句>];
end;參數說明格式:[var|const]<形參名>:<類型>
Var和Const分別為地址傳遞和值傳遞;
相同類型形參用逗號隔開,不同類型用分號隔開。第二十四頁,共41頁。第五講過程與函數5.2函數(function):具有返回值的子程序。內部函數類型語法數學函數Sin(x);&Cos(x);&ArcTan(x);x為弧度平方與平方根函數:Sqr(x);&Sqrt(x);絕對值函數:Abs(x);取整函數:Int(x);Trunc(x);舍入取整Round(x);取小數函數Frac(x);指數函數:Exp(x);對數函數:ln(x);隨機函數:Random(x);圓周率函數:Pi;字符處理函數大小寫轉換函數:LowerCase(s);UpperCase(s);字符串比較函數:區(qū)分大小寫CompareStr(s1,s2);
不區(qū)分大小寫CompareText(s1,s2);第二十五頁,共41頁。第五講過程與函數5.2函數(function):具有返回值的子程序。內部函數類型語法字符處理函數合并函數:ConCat(s1,s2,…)定位函數:Pos(s0,s);長度函數:Length(s);截取函數:Copy(s,n,m);進制轉換:InttoHex(x,y);ASCII轉換成字符:Char(x);格式化字符串:Format(Flag,Args);類型轉換:IntToStr(x);FloatToStr(x);
StrToint(s);StrToFloat(s);第二十六頁,共41頁。第五講過程與函數5.2函數(function):具有返回值的子程序。內部函數類型語法日期時間函數Now;date;time;DateToStr(date);TimeToStr(time);DateTimeToStr(datetime);EncodeDate(year,month,day);EncodeTime(hour,min,sec,msec);DateofWeek(date);
FormatDateTime(format,datetime);第二十七頁,共41頁。第五講過程與函數5.2函數(function):具有返回值的子程序。自定義函數聲明格式備注Function<函數名>[(<形參列表>)]:<返回類型>;
[<局部變量聲明>];
begin
[<語句>];
end;函數值通過函數名或系統(tǒng)預定義的Result帶回;當函數名被賦值時,等同于Result;當函數名出現(xiàn)在本函數其他地方,則表示函數的遞歸調用。參數傳遞在形參前不加任何保留字或加保留字Const,為值傳遞方式,此時形參的任何變化都不會影響實參;在形參前加保留字var或Out,為地址傳遞方式,此時形參和實參共用同一內存地址,保持同變化。第二十八頁,共41頁。第五講過程與函數5.2函數(function):具有返回值的子程序。缺省參數Function<函數名>[(<形參名>:<類型>=<常量>)]:<返回類型>;
[<局部變量聲明>];
begin
[<語句>];
end;數組參數數組既可以作為函數的參數,也可以作為函數的返回類型;同時,Dephi還提供開放式數組,即作為函數形參的數組在定義時大小不確定,在調用函數(包括過程)時,可以傳遞不同大小的同類型數組作為實參。第二十九頁,共41頁。第五講過程與函數5.2函數(function):具有返回值的子程序。重載同名過程或函數對應多個具體的實現(xiàn);
要求彼此間在參數個數、參數類型上有所不同;
如定義缺省形參,調用前必須能讓系統(tǒng)區(qū)分具體的調用過程與函數。嵌套即在一個程序中調用另一個程序;外層過程或函數必須完全包含在內層過程或函數之中;
計算由內而外,逐層外推。遞歸即在一個程序中直接或間接調用程序本身;
遞歸包括直接遞歸和間接遞歸兩類;無限遞歸沒有意義。第三十頁,共41頁。第五講輸入與輸出5.1輸入與輸出對話框輸入與輸出類型語法消息對話框過程Showmessage(<信息內容>);ShowmessageFmt(<信息內容>,<參數值組>);Messagedlg(<信息內容>,<對話框類型>,<按鈕組>,HelpContents);MessagedlgPos(<信息內容>,<對話框類型>,<按鈕組>,HelpContents,X,Y);輸入對話框<字符型變量>:=inputbox(<對話框標題>,<信息內容>,<缺省內容>);<邏輯型變量>:=inputquery(<對話框標題>,<信息內容>,<字符串變量>);第三十一頁,共41頁。第五講輸入與輸出5.2鍵盤事件鍵盤事件類型語法onKeyDownKeydown(sender:Tobject;VarKey:Word;Shift:TShiftState)Key:Vk_Back、VK_UP……|TpyeTShiftState=setof(ssshift,ssalt…)|見例子之手寫板onKeyPressKeyPress(sender:Tobject;VarKey:Char)onKeyUpKeyUp(sender:Tobject;VarKey:Word;Shift:TShiftState)Key:Vk_Back、VK_UP……|TpyeTShiftState=setof(ssshift,ssalt,ssleft,ssCtrl,ssMiddle…)第三十二頁,共41頁。第五講輸入與輸出5.3鼠標事件鼠標事件類型語法OnClickClick(Sender:Tobject)OnDblClickDblClick(Sender:Tobject)onMouseDownMouseDown(Sender:Tobject;Btton:TMouseBtton;Shift:TshiftState;x,y:Integer)TMoustButton=(mbLeft,mbRight,mbMiddle)TpyeTShiftState=setof(ssshift,ssalt,ssCtrl…)onMouseUp同onMouseDownonMouseMoveMouseMove(Sender:Tobject;Shift:TshiftState;x,y:Integer))見界面設計實驗之手寫板第三十三頁,共41頁。第五講輸入與輸出5.鼠標拖放鼠標拖放步驟內容步驟1將源和目標的DragMode設置為dmManual步驟2開始鼠標拖放狀態(tài):BeginDrag(immediate:Boolean;threshold:Integer)步驟3目標準備接受:DragOver(Sender,Source:Tobject;X,y:Integer;State:TDragState;VarAccept:Boolean)步驟4通過目標對象OnDragOver事件完成拖放交接。見界面設計實驗之密碼拖放解析第三十四頁,共41頁。第六講界面設計6.1窗體屬性作用CaptionNameTopLeftWidthHeightScaleWidthScaleHeightAlignBorderIcon設置系統(tǒng)菜單和窗口控制按鈕Position窗體的顯示位置與大小BorderStyle邊框類型ColorFontVisibleEnableFormStyleWindowsSate方法作用CreateShowCloseCloseQueryReleaseShowModalCanvasPrint事件作用OnCreateOnCloseQueryOnCloseOnDesStroyOnShowOnhide靜態(tài)與動態(tài)創(chuàng)建新窗體以及MDI窗體見界面設計實驗FrmEx第三十五頁,共41頁。第六講界面設計6.2常見組件組件備注LabelNameCaptionFontColorTransParentAlignmentLayoutTEdit屬性:NameTextAutosizeEnablePassWordCharreadonlyMaxLengthCharCaseSelTextBorderStyle方法:clearselectall事件:OnChangeKeyPressTMemoLinesScrollBallWantReturnWantTabTButtonCaptionFont|OnclickOnMouseMove/Up/DownTBitBtnCaptionKindGlyphLayoutMarginSpacingTCheckBoxCheckedAlignmentStateCaptionRadioGroup|GroupBox、Panel+TRadioBut
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度建筑企業(yè)施工人員勞動保障合同2篇
- 二零二五年度工傷免責風險評估與防范合同3篇
- 二零二五年度個體工商戶租賃合同及創(chuàng)業(yè)投資服務協(xié)議3篇
- 二零二五年度智慧農業(yè)設施安裝與運營合同3篇
- 2025年度版權購買合同:影視作品全球版權交易3篇
- 2025年度環(huán)境治理與污染物減排合同3篇
- 2025年度綠色信托投資公司專項借款合同3篇
- 二零二五年度哈爾濱市租賃市場標準協(xié)議3篇
- 2025年度碎石加工廢棄物處理與資源化利用合同3篇
- 2025版數據中心按份額擔保合同范本3篇
- 三角形鋼管懸挑腳手架施工方案
- 電力基建項目管理實施規(guī)劃范本
- 壓力容器風險評估報告樣板
- 胃黏膜腸上皮化生
- 汽車離合器設計畢業(yè)設計(論文)
- 2023年房屋租賃管理模板
- 全部編版四年級語文下生字讀音、音序、偏旁及組詞
- 藥物的不良反應
- 《公安機關人民警察內務條令》
- 呼吸機常見報警及處理
- 巨力索具(河南)有限公司年生產10萬噸鋼絲及5萬噸鋼絲繩項目環(huán)境影響報告
評論
0/150
提交評論