




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第1章 delphi的編程語言object pascal1.1 認識delphi1.2 object pascal語言基礎1.3 delphi 中的程序調試及異常處理本章小結1.1 認識delphi u感受delphi編程udelphi的特點udelphi編程環(huán)境及其作用udelphi應用程序的文件組成udelphi中幾個重要概念udelphi學習方法本節(jié)要點練習感受delphi編程下面在delphi的集成開發(fā)環(huán)境中編寫一個最簡單程序,并運行。讓大家對delphi的編程有一種感性認識,并體驗delphi快捷、方便、高效的編程環(huán)境。演示delphi的特點delphi最早是borland公司于19
2、94年底發(fā)布的一種可視化編程語言。它以object pascal作為基本開發(fā)語言。目前已從delphi 1.0發(fā)展到delphi 7.0。它適用于windows 9x, windows xp,windows 2000或更高的版本操作系統(tǒng),同時也推出lynux操作系統(tǒng)下的kylix版本。u編程效率高、代碼質量好u領先的數據庫技術u強大的internet應用開發(fā)功能u與office 的巧妙結合可視化編程語言u編程語言的發(fā)展 機器語言匯編語言高級語言(結構化面向對象可視化)u面向對象的程序設計(object oriented programming)u可視化(visual)編程語言 delphi,v
3、fp,vb,vc 等,由組件來構造應用程序。面向對象的程序設計u對象:把要處理的數據和處理這些數據的方法組合成的一種數據類型。對象有如下三大特性: 封裝性:把數據和處理數據的方法定義在同一數據類型(對象)中,一般只能用該對象中的方法來處理這些數據。 繼承性:可以用已定義的對象來構造其子對象,并且子對象可以訪問其父對象中的數據和方法。 多態(tài)性:為動作賦予一個可由對象序列共享的名稱,對象序列中的每個對象均以適合于自身的方式實現(xiàn)該操作。u事件驅動對象的多態(tài)性實例 implementation$r *.dfmtype tperson=class name:string; weight:integer;
4、 constructor create(aname:string;aweight:integer); function gettitle:string; virtual; /父類中使用虛方法 function getinformation:string; end;tstudent=class(tperson) school:string; constructor create(aname:string;aweight:integer;aschool:string); function gettitle:string; override;/子類中使用覆蓋 end;constructor tper
5、son.create(aname:string;aweight:integer);begin inherited create; name:=aname; weight:=aweight;end;function tperson.gettitle:string;begin result:=name+ is a person;end;對象的多態(tài)性實例(續(xù))constructor tstudent.create(aname:string;aweight:integer;aschool:string);begin inherited create(aname,aweight); school:=as
6、chool;end;function tstudent.gettitle:string;begin result:=name+ is a student of +school;end;procedure showtitle(person:tperson);begin showmessage(person.getinformation);end;procedure tform1.button1click(sender: tobject);var aperson:tperson; astudent:tstudent;begin aperson:=tperson.create(david,60);
7、astudent:=tstudent.create(young,65,tsinghua); showtitle(aperson); /顯示某人相關的信息 showtitle(astudent); /顯示某學生相關的信息 aperson.free; astudent.free;end;delphi編程環(huán)境及其作用菜單欄與工具欄組件(component)欄對象樹狀列表(object treeview)對象監(jiān)視器(object inspector)窗體設計器(form designer)代碼編輯器(code editor)項目管理器(project manager)delphi應用程序的文件組成de
8、lphi應用程序的文件主要有: 工程文件(.dpr);單元文件(.pas);窗體文件(.dfm)等。delphi中幾個重要概念u類(class):delphi中的對象類型數據,它由類的成員構成。u對象:類數據類型的實例。u組件:組成應用程序的構件,其類型一般為類類型。我們常用的是組件的屬性、方法及事件。u組件的事件:能夠把發(fā)生于某一組件上的操作同一指定的方法進行關聯(lián)。當該操作發(fā)生時會自動執(zhí)行指定的方法。窗體或窗體上的組件接收事件,事件可由用戶引發(fā)(例如鍵盤或鼠標操作),可由系統(tǒng)引發(fā)(例如定時器事件),也可由代碼間接引發(fā)(例如當代碼裝載其他窗體時產生的load事件)類的成員域(字段):類中的數據
9、。方法:類中的過程或函數。屬性:類似于類中的域,但它本身并不占存儲空間,對它進行存取操作,可以是直接存取,也可以是調用相應的方法,它可以是只讀,只寫或讀寫。delphi學習方法u轉變編程思維方式u重視上機u應用為主u多參考他人的編程經驗和技巧(delphi參考書,delphi網站)delphi網站delphi 專家:delphi 園地:delphi程序員之家:5.delphi學習方法本節(jié)要點 (1.1)u熟悉delphi集成開發(fā)環(huán)境主要組成部分及其作用:菜單欄與工具欄,組件欄,對象樹狀列表,對象監(jiān)視器,窗體設計器,代碼編輯器,項目管理器等。u掌握delphi應用程序的文件組成:項目文件(.dp
10、r);單元文件(.pas);窗體文件(.dfm)等。u了解幾個重要概念:類,對象,組件,組件的屬性、方法及事件等。練習(1.1)u理論1. delphi集成開發(fā)環(huán)境主要有哪幾個部分組成,并說明各部分的作用。2.一個delphi應用程序主要由哪些文件組成?3.預習object pascalu上機實訓教程1.1,1.21.2 object pascal語言基礎 u標識符u數據類型 u變量和常量u運算符和表達式u語句u過程和函數u程序和單元本節(jié)要點練習標識符u標識符必須由字母(az、az)、數字(09)或下劃線組成,不區(qū)分字母的大小寫。u標識符的第一個字符必須是字母或下劃線。u標識符的長度不應超過2
11、55個字符,如果超過255字符就只有前255個有效。u不能將保留字用作標識符,如if、and、do等。u盡量不要重新定義已預定義的標識符,如一些標準的數學函數sqrt、sin等。數據類型 有序類型(ordinal) 實型(real)整型(integer)字符型(character)布爾型(boolean)枚舉(enumerated)子界(subrange)數組(array)記錄(record)集合(set)文件(file)類(class)類引用(class reference)接口(interface)簡單類型(simple)字符串類型(string)構造類型(structured)變體類型(
12、variant)指針類型(pointer)過程類型(procedural)整型(integer)u常用整型:integer-21474836482147483647有符號 4字節(jié)cardinal04294967295 無符號 4字節(jié)u基本整型:shortint-128127有符號 1字節(jié)smallint-3276832767有符號 2字節(jié)longint-21474836482147483647有符號 4字節(jié)int64263 263 -1有符號 8字節(jié)byte0255 無符號 1字節(jié)word065535 無符號 2字節(jié)longword04294967295 無符號 4字節(jié)字符型(characte
13、r)u常用字符型:charansi字符集 1字節(jié)表示: a或#97 或#39 空格u基本字符型:ansichar ansi字符集 1字節(jié)widechar unicode字符集(前256個是ansi字符集) 2字節(jié)布爾型(boolean)uboolean(1字節(jié))false true ord(false) = 0 ord(true) = 1pred(true) = false succ(false) = trueubytebool (1字節(jié)), wordbool (2字節(jié)), longbool (4字節(jié))false true ord(false) = 0 ord(true) 0pred(fals
14、e) = true succ(false) = true枚舉(enumerated)type 類型名=(標識符1,標識符2, 標識符n);如:type tmycolor = (mcred, mcblue, mcgreen, mcyellow, mcorange); answer = (ansyes, ansno, ansmaybe);其對應的序號為0,1,2子界(subrange)type somenumbers = -128.127; caps = a.z;type tcolors = (red, blue, green, yellow, orange, purple, white, bla
15、ck); tmycolors = green.white;實型(real)u常用實型real 5.0 10-324 1.7 103088字節(jié)u基本實型real48 2.9 10-39 1.7 10386字節(jié)single 1.5 10-45 3.4 1038 4字節(jié)double 5.0 10-324 1.7 103088字節(jié)etended 3.6 10-4951 1.1 10493210字節(jié)comp -263+1 263 8字節(jié)currency-922337203685477.5808 922337203685477.5807 8字節(jié)字符串類型(string)u常用字符串string $h+ a
16、nsistring , $h- shortstringborland borland youll see youll see 無字符line 1#13#10line 2中華人民共和國 u基本字符串shortstring 255 個字符ansistring 231 個字符widestring230個字符數組(array)type 類型名=array有序類型 of 基類型;如:type myarray= array1.100 of char;type tmatrix = array1.10, 1.50 of real;記錄(record)type 類型名 = record 域名:類型;. 域名:類
17、型;end;如:type tdaterec = record year: integer; month: (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec); day: 1.31; end;集合(set)type 類型名= set of 有序類型;如:type tintset = set of 1.250;set of byte;set of (club, diamond, heart, spade);set of char;集合值表示:1, 3, 5, 7, 9 ,a,b,c文件(file)type phoneentry
18、= record firstname, lastname: string20; phonenumber: string15; listed: boolean; end; phonelist = file of phoneentry;類(class)type tlistcolumns = class(tcollection) private fowner: tcustomlistview; function getitem(index: integer): tlistcolumn; procedure setitem(index: integer; value: tlistcolumn); pr
19、otected function getowner: tpersistent; override; procedure update(item: tcollectionitem); override; public constructor create(aowner: tcustomlistview); function add: tlistcolumn; property owner: tcustomlistview read fowner; property itemsindex: integer: tlistcolumn read getitem write setitem; defau
20、lt; end; /類不能定義在函數或過程中類引用類型(class reference)type 類引用類型名=class of 類類型;如:type tclass = class of tobject;var anyobj:tclass;anyobj變量可以引用任何其他類。類引用類型在用戶要調用一個類的方法,但編譯時又不知道該類的類型時非常有用。接口(interface)type 接口名 = interface (父接口) 各類中共同的方式或屬性列表end;它體現(xiàn)的是多個互不相關的類之間的相同行為。變體類型(variant)變體類型與其他數據類型結合使用會產生類型的自動轉換。var v1,
21、v2, v3, v4, v5: variant; i: integer; d: double; s: string;begin v1 := 1; integer value v2 := 1234.5678; real value v3 := hello world!; string value i := v1; i = 1 (integer value) d := v2; d = 1234.5678 (real value) s := v3; s = hello world! (string value) 指針類型(pointer)type 指針類型名= 類型對字符串類型和類類型,其內部實現(xiàn)方
22、式均用指針。但為方便使用,delphi把許多運用指針的地方隱藏起來,用戶在編制程序時可以不把其當作指針來處理,而讓delphi來處理容易出錯的問題。過程類型type tintegerfunction = function: integer; tprocedure = procedure; tstrproc = procedure(const s: string); tmathfunc = function(x: double): double;變量和常量u變量u常量真常量類型常量變量var 變量名1,變量名2,變量名n:類型;如:(全局變量在說明時還可以給初值)var x, y, z: dou
23、ble; i, j, k: integer; digit: 0.9; okay: boolean; crtmode: byte absolute $0040; s:string; /字符串變量訪問 rd: tdaterec; /記錄變量訪問字符串變量訪問(s:string)u作為字符串來訪問s:=abcde;u作為單個字符來訪問s1,s2,s3等訪問單個字符,類似于數組中的每個元素。記錄變量訪問(rd:tdaterec)u點域訪問rd.year:=2001; rd.month:=feb; rd.day:=12;uwith do訪問with rd do year:=2001;type tdate
24、rec = record year: integer; month: (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec); day: 1.31; end;真常量const 常量名=常量表達式;const min = 10; max = $100; center = (max - min) div 2; beta = chr(225); numchars = ord(z) - ord(a) + 1; message = out of memory; errstr = error: + message + . ; errpos
25、= 80 - length(errstr) div 2; ln10 = 2.302585092994045684; ln10r = 1 / ln10; numeric = 0.9; alpha = a.z, a.z; alphanum = alpha + numeric;類型常量const 常量名:類型=值;(兼容老版本,要加編譯開關$j+;現(xiàn)在可以直接在全局變量中賦初值)consti:integer=23;digits1: array0.4 of char=(0,1,2,3,4);digits2: array0.4 of char = 01234;type tcube=array0.1, 0
26、.1, 0.1 of integer;tmonth=(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec);tdate = record d: 1.31; m: tmonth; y: 1900.1999; end;const maze:tcube =(0, 1),(2, 3),(4, 5),(6,7);someday: tdate = (d: 2; m: dec; y: 1960);運算符和表達式u算術運算(arithmetic operator)u關系運算(relational operator)u布爾運算(boolean operator)u位運
27、算(bitwise operator)u字符串運算(string operator)u集合運算(set operator)u指針運算(pointer operator)u類運算(class operator)u取地址操作()運算符的優(yōu)先級算術運算(arithmetic operator)算術運算符:+, *, /, div(整除), mod(取余)運算量有整型、實型等, div和mod只能是整型,結果類型同運算量。例:5/2 2.55 div2 25 mod 2 15 mod 2 1-5 mod 2 -1-5 mod -2 -1關系運算(relational operator)關系運算符有 =
28、, , , =運算量有簡單類型、字符串類型等,結果為布爾類型。例:60=30 true2.54-43.2 falseabcdefalse true布爾運算(boolean operator)布爾運算符有 not, and, or, xor運算量和結果均只能為布爾類型。例:true and false falseflase or (60=30) true位運算(bitwise operator)位運算符有 not, and, or, xor, shl, shr運算量和結果均只能為整型。例:byte(not $ff) $00byte($10 and $11) $10byte( $10 or $1b
29、) $1bbyte( $20 xor $21) $01byte( $10 shl 2) $40byte( $20 shr 1) $10字符串運算(string operator)字符串運算符主要指連接兩個字符串的運算符 +例:i am a+ student. i am a student.文件名:+abc.doc 文件名:abc.doc集合運算(set operator)集合運算符有 +(并), - (差), * (交), = (包含), = (相等), (不等), in (成員檢查)指針運算(pointer operator)指針運算符有 +, -, =, , 類運算(class opera
30、tor)類運算符有 as, isas:將一個類實例轉換為另一個類型的類。如:sender as tbuttonis:用來判斷一個類實例的類型,結果為布爾型。如:sender is tcomponet取地址操作()是單目運算符,其作用是返回變量的地址。運算符的優(yōu)先級, not*, /, div, mod, and, shl, shr, as+, - or, xor=, , , =, in, is高低語句u注釋符單行注釋符/;多行注釋符或(*)u說明語句對數據類型、變量、常量、標號、函數及過程等進行聲明的語句,編譯后不生成可執(zhí)行代碼。語句以分號結束。u賦值語句和復合語句u選擇語句u循環(huán)語句uwit
31、h語句賦值語句和復合語句u賦值語句(變量名:=表達式)x := y + z;done := (i = 1) and (i 100);i := sqr(j) - i * k;somearrayi + 1 := p;tmyobject.someproperty := true;u復合語句(把多個語句組合成一個語句)begin z := x; x := y; y := z;end;選擇語句uif語句ucase語句ugoto語句if語句if j = 0 then exit /此處不能用;else result := i/j;注:過程exit將終止子程序if j 0 thenbegin result :
32、= i/j; count := count + 1;end /此處不能用;else if count = last then done := true /此處不能用;else exit;if 布爾型表達式 then 語句1 else 語句2case語句case 有序類型表達式 of 選擇項1: 語句1; . 選擇項n: 語句n;else 語句;end注:各選擇項中的值要唯一。case i of 1.5: caption := low; 6.9: caption := high; 0, 10.99: caption := out of range;else caption := ;end;got
33、o語句label starthere /說明一個標號.starthere: beep;goto starthere;注:標號可以是標識符或09999的數。循環(huán)語句ufor語句uwhile語句urepeat語句for語句for 有序類型變量:=初值 to 終值 do 語句或for :=初值 downto 終值 do 語句注:有序類型變量的值增(to)減(downto)1,越過終值結束循環(huán)。max:=data1;for i := 2 to 12 do if datai max then max := datai;while語句while 布爾表達式 do 語句注:布爾表達式為false結束循環(huán)。m
34、ax:=data1;i:=2;while i max then max := datai; i:=i+1;end;repeat語句repeat 語句1; .; 語句2; until 布爾表達式;注:布爾表達式為true結束循環(huán)。max:=data1;i:=2;repeat if datai max then max := datai; i:=i+1;until i12;with語句訪問記錄中的數據域或類中的成員(域,屬性或方法)。 with obj do 語句注:指類或記錄類型變量的名字,下同。 with obj1, ., objn do 語句或with obj1 do with obj2 d
35、o . with objn do 語句注: obj1, ., objn等分別作用于與其對應的各自成員,可嵌套。舉例with語句舉例with edit1 do begin text:=時間; /相當于edit1.text:=時間; enable:=false; /相當于edit1.enable:=false; end;with label1,edit1 do begin caption:=label one; /相當于label1.caption:=label one; text:=text one; / 相當于edit1.text:=text one; end;with form1,edit1
36、 do text:=text one; / 相當于form1.edit1.text:=text one;過程和函數u過程u函數u常用過程或函數過程procedure 過程名(形參列表); 過程頭類型聲明常量聲明變量聲明過程聲明函數聲明begin 語句;end;注:作為語句來調用。舉例說明部分語句部分過程體過程舉例/把整型數轉化為字符串procedure numstring(n: integer; var s: string); var v: integer;begin v := abs(n); s := ; repeat s := chr(v mod 10 + ord(0) + s; v :=
37、 v div 10; until v = 0; if n 0 do begin if odd(i) then result := result * x; i := i div 2; x := sqr(x); end;end; /p:=power(2.0,3)常用過程或函數(sysutils或system單元)abs 求絕對值sqr 求平方值sqrt 求平方根sin 求正弦cos 求余弦exp 求e的冪ln 求自然對數pi 3.1415926535897932385date 取日期time 取時間length 求字符串的長度pos 求子串的位置delete 刪除子串copy 復制字符串chr a
38、scii值對應的字符 ord 取得序號round 實型四舍五入為整型trunc 實型取整inttohex 整型變?yōu)槭M制數串inttostr 整型變?yōu)樽址畇trtoint 字符串變?yōu)檎蚫atetostr 日期變?yōu)樽址畊pcase 轉化為大寫字母uppercase 轉化為大寫字符串lowercase 轉化為小寫字符串random 產生一個隨機數odd 判定奇數程序和單元舉例program 程序名; 程序頭uses子句 引用單元類型聲明常量聲明變量聲明過程聲明函數聲明begin 語句;end. 程序結束說明部分語句部分程序體程序舉例program editor; /程序對應的文件名(.dp
39、r)必須與程序名相同。uses forms, reabout in reabout.pas aboutbox, remain in remain.pas mainform; $r *.res /編譯指示begin application.title := text editor; application.createform(tmainform, mainform); application.run;end.單元unit 單元名; 單元頭interfaceuses子句 引用其它單元 接口部分implementation uses子句 引用其它單元 實現(xiàn)部分initialization 初始化代
40、碼finalization 結束代碼end. 單元結束舉例單元舉例unit unit1; /單元對應的文件名(.pas)必須與單元名相同interfaceuses windows, messages, sysutils, classes, graphics, controls, forms, dialogs;type tform1 = class(tform) button1: tbutton; procedure button1click(sender: tobject); private private declarations public public declarations end
41、;var form1: tform1;implementation$r *.dfmprocedure tform1.button1click(sender: tobject);begin close;end;end.本節(jié)要點(1.2)u會使用delphi的幫助系統(tǒng)(object pascal reference主題)查閱object pascal的各語法要素u逐漸熟悉object pascal的常用數據類型、變量、常量、運算符和表達式,并掌握它們的用法。u熟悉各語句的格式和用法,并使用本講稿中的各示例編寫完整程序,來驗證各語句的用法。u逐漸掌握過程和函數的編寫和調用。u熟悉程序和單元的結構。練
42、習(1.2)u理論教程p28-30選擇題1-5,簡答題2-3u上機實訓教程1.3,1.4補充:使用delphi編寫一實現(xiàn)排序功能的程序。演示1.3 delphi 中的程序調試及異常處理u程序調試u異常處理本節(jié)要點練習程序調試u程序設計中的錯誤類型u設置編譯選項u控制程序的執(zhí)行u使用監(jiān)視列表窗口(watch list, ctrl+f5)u使用求值/修改對話框(evaluate/modify, ctrl+f7)程序設計中的錯誤類型u設計期錯誤u編譯期錯誤u運行期錯誤u邏輯錯誤 設計期錯誤 這一類型的錯誤較容易發(fā)現(xiàn)和糾正,因為delphi能對特定的值進行合法性檢查,發(fā)現(xiàn)這類錯誤,delphi將顯示一
43、個警告窗口,以提示用戶糾正錯誤。 這種錯誤類型發(fā)生在使用delphi進行可視化設計的時候,通常是因為給組件的某個屬性輸入了非法的值。例如按鈕組件tbitbtn的numglyphs屬性取值為 1.4,若輸入的值不在此范圍,則發(fā)生錯誤。編譯期錯誤 編譯期錯誤也稱為語法錯誤。在delphi中,通常是當程序代碼違反了object pascal語言的語法規(guī)則時發(fā)生這類錯誤。比較常見的語法錯誤有標識符未定義或拼寫錯誤;語句的末尾漏掉分號;賦值語句中漏寫昌號;begin與end末配對;括號末配對;引號末配對等。 如果程序代碼中有語法錯誤,編譯不能通過,代碼編輯器的狀態(tài)行將給出錯誤信息提示,并加亮有語法錯誤的
44、代碼行。運行期錯誤 程序雖然通過了編譯,但運行失敗,這種錯誤稱為運行期錯誤,例如應用程序試圖打開一個不存在的文件,或者運算時出現(xiàn)被零除等情況。 delphi能夠檢測出這類錯誤,并退出當前模塊。此時,如果不能確定錯誤發(fā)生在什么地方,可以用delphi內部集成的調試器查找錯誤的位置。例如可以用單步執(zhí)行命令,讓程序一條語句一條語句地執(zhí)行,或者添加一個監(jiān)視窗口,觀察某個變量的變化情況。邏輯錯誤舉例 邏輯錯誤是指程序通過了編譯,也能執(zhí)行,但執(zhí)行的結果跟預期的不同。 邏輯錯誤有時比較難找,因為delphi不能自動識別這類錯誤。這時就需要用到內部集成的調試器,通過控制程序的運行、監(jiān)視程序的輸出或觀察變量的值
45、,把錯誤逐步定位在一個較小的范圍內。舉例(邏輯錯誤)編程實現(xiàn)符號函數的功能 :var x,y:real;begin x:=-2; y:=0; if x=0 then if x0 then y:=1 else y:=-1; showmessage(floattostr(y);end;設置編譯選項 設置編譯選項用來控制delphi程序的編譯方式。 可以使用如下二種方法進行設置:(1)使用delphi菜單project/options-compiler(2)在程序中加$z+或$z-設置或清除編譯選項,其中z為編譯開關字母。 建議,在程序調試時,將所有檢查性的選項設置上,優(yōu)化特性清除,以利于調試;當程
46、序調試通過后,應把那些加重程序時間、空間負擔的編譯開關清除,設置優(yōu)化代碼功能,再編譯一次,以生成簡練的可執(zhí)行文件。編譯選項1代碼生成(code generation) 選 項 說 明 字母 optimization 編譯時啟動優(yōu)化功能:如把循環(huán)變量放入cpu的寄存器中,對重復出現(xiàn)的表達式只求一次值等 o stack frames 強制編譯器為每個過程和函數產生一個堆找結構,這主要是為調試某些程序設置的 w pentium-safe fdiv 自動生成檢測錯誤浮點除法的代碼 u record field alignment 讓變量地址都為1,2,4,8 的整數倍數,以提高cpu對內存訪問的速度
47、a 編譯選項2運行時的錯誤(runtime errors) 信息(messages) 選 項 說 明 字母 range checking 檢查數組或字符串類型的下標范圍是否越界 r i/o checking 在每次i/o調用后檢查是會有io錯誤 i overflow checking 檢查整數操作是否溢出 q 選 項 說 明 show hints 使編譯器顯示提示信息 show w arnings 使編譯器顯示警告信息 編譯選項3語法選項(syntax options)選 項 說 明 字母 strick var-strings 設置字符串參數的錯誤檢查, 要求形參與實參類型必須嚴格一致(若 o
48、pen parameters 選項被選中,此項無效) v complete boolean eval 計算完邏輯表達式的所有項后計算整個邏輯表達式的值。 當不選此項, 且邏輯表達式的值能確定時,后面的項就不計算了。如無特殊要求此項通常不選 b extended syntax 用 delphi 的擴展語法,允許忽略函數的返回值,而像使用過程一樣使用函數;同時也支持 pchar 類型 x type operator 使由操作符返回的指針只與指向同類型變量的指針兼容 t open parameters 允許在過程及函數的聲明中使用開放式的字符串參數 p huge strings 使關鍵字 strin
49、g 對應新的 ansistring 類型(否則只對應shortstring 類型) h assignable typed constants 編譯器允許程序修改類型常量的值。 此選項是為了兼容早期的 delphi 和 pascal 版本而設置的 j 編譯選項4調試(debugging) 舉例選 項 說 明 字母 debug information 把調試信息放入單元文件(.dcu)里 d local symbols 生成局域變量信息 l reference info /definitions only 生成符號索引信息。若此二項均被選中,編譯器記錄下各標識符的定義位置,使代碼瀏覽器工作。若只有
50、reference info被選中, 編譯器記錄下標識符定義和使用位置的信息。除非 debug information和 local symbols都被選中,否則此二選項均無效 y assertions 在程序代碼中插入斷點代碼 c use debug dcus 允許鏈接調試版本的vcl 舉例(range checking)$r+或$r-var a:array 1.3 of byte; i:integer;begin for i:=1 to 4 do begin ai:=i; showmessage(inttostr(ai); end;end;控制程序的執(zhí)行u設置斷點(toggle break
51、point/f5)u執(zhí)行到光標處(run to cursor/f4)u單步執(zhí)行(trace into/f7,step over/f8)舉例舉例(控制程序的執(zhí)行)編程實現(xiàn)符號函數的功能 :var x,y:real;begin x:=-2; y:=0; if x=0 then if x0 then y:=1 else y:=-1; showmessage(floattostr(y);end;異常處理udelphi對異常的自動處理u編程人員對異常的處理tryexcept語句raise語句tryfinally語句u自定義異常類及其使用delphi對異常的自動處理 delphi為應用程序提供了一套缺省的
52、自動異常處理機制,即當前模塊發(fā)生錯誤后退出當前模塊并給出錯誤信息,而并不立即引起應用程序的中止。 若程序在delphi的集成開發(fā)環(huán)境中運行,在給出相應錯誤信息的同時,還盡可能定位出錯的位置。例如:var i:integer; r:real;begin i:=0; r:=8 / i; showmessage(floattostr(r);end;tryexcept語句(格式1)格式1:try 語句except 語句end;功能: 若執(zhí)行try與except之間的語句發(fā)生異常,則執(zhí)行except與end之間的語句對該異常作出處理,并清除異常,否則(沒有異常)跳過except與end之間的語句。舉例舉
53、例(格式1)舉例:var i:integer; r:real;begin i:=0; try r:=8/i; showmessage(floattostr(r); except showmessage(除數為零); end;end;tryexcept語句(格式2)格式2:try 語句except on 標識符: 異常類 do 語句 on 標識符: 異常類 do 語句 end;功能: 當執(zhí)行try與except之間的語句發(fā)生異常時,依次查找on后的異常類,直到發(fā)現(xiàn)某個匹配的異常類即執(zhí)行其do后語句,并清除異常,然后跳過try與except結構,執(zhí)行end后的語句。 若在on后沒有找到匹配的異常類
54、,則異常仍然存在。舉例舉例(格式2)var i,j:integer; r:real;begin j:=20; try i:=strtoint(edit1.text); j:=10 div i; r:=10/(i-1); showmessage(正常,j=+inttostr(j)+,r=+floattostr(r); except on e:econverterror do showmessage(異常,非數值+#13+e.message); on edivbyzero do showmessage(異常,整數被0除); on ezerodivide do showmessage(異常,實數被0
55、除); end;end;tryexcept語句(格式3)格式3:try 語句except on 標識符: 異常類 do 語句 on 標識符: 異常類 do 語句 else 語句end;功能: 當執(zhí)行try與except之間的語句發(fā)生異常時,依次查找on后的異常類,直到發(fā)現(xiàn)某個匹配的異常類即執(zhí)行其do后語句,若在on后沒有找到匹配的異常類,則執(zhí)行else后的語句,并清除異常。舉例舉例(格式3)var i,j:integer; r:real;begin j:=20; try i:=strtoint(edit1.text); j:=10 div i; r:=10/(i-1); showmessage(正常,j=+inttostr(j)+,r=+floattostr(r); /raise exception except on e:econverterror do showmessage(異常,非數值+#13+e.message); else showmessage(異常,除數為0); end;end;raise語句在except后語句處理了異常,則清除異常,但可在其后使用raise重新產生該異常,再提供給外層try來處理。var i:integer; r:real;begin i:=0; try r:=8/i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅行學習與研學活動安排計劃
- 社會實踐小班社區(qū)活動的開展計劃
- 人力資源的發(fā)展與管理計劃
- 2025年企業(yè)管理服務項目建議書
- 2025年白喉、百日咳、破傷風、乙肝四聯(lián)制劑合作協(xié)議書
- 跨國業(yè)務數據轉換合規(guī)指南
- 基于人工智能的智能家居設計合作協(xié)議
- 服裝設計行業(yè)服裝設計版權協(xié)議
- 2025年抗帕金森病藥項目建議書
- Pipemidic-acid-trihydrate-Standard-生命科學試劑-MCE
- 小學數學教學評一致性研討活動
- EIM Book 1 Unit 7 Learning languages單元檢測試題
- WTC瓦斯突出參數儀操作規(guī)程
- 四川省政府采購評審專家考試題庫
- 混凝土攪拌站安全生產風險分級管控和隱患排查治理雙體系方案資料2021-2022完整實施方案模板
- GB/T 34875-2017離心泵和轉子泵用軸封系統(tǒng)
- GB/T 25085.3-2020道路車輛汽車電纜第3部分:交流30 V或直流60 V單芯銅導體電纜的尺寸和要求
- GA/T 1081-2020安全防范系統(tǒng)維護保養(yǎng)規(guī)范
- 民宿教學講解課件
- 2023一年級下冊語文教學工作計劃(2篇)
- 山東省中考物理總復習 八上 第2講 聲現(xiàn)象
評論
0/150
提交評論