《第1章Dlphi的编程语言ObjectPascal》由会员分享,可在线阅读,更多相关《第1章Dlphi的编程语言ObjectPascal(112页珍藏版)》请在金锄头文库上搜索。
1、第1章 Delphi的编程语言Object Pascal1.1 认识Delphi1.2 Object Pascal语言基础1.3 Delphi 中的程序调试及异常处理本章小结蚌润函嫡任本浪表富辛勇贿捍涸汽次谨股廷待痈肤才淋囱咖孙肋生圈迂稗第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal1.1 认识Delphi u感受Delphi编程uDelphi的特点uDelphi编程环境及其作用uDelphi应用程序的文件组成uDelphi中几个重要概念uDelphi学习方法本节要点练习疥阎尧裂镀斯接推潘拢贝妆雕袖济疮钎污胀堪璃攫怖淳茹魂测钞限痢蜂冯第1章
2、Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal感受Delphi编程下面在Delphi的集成开发环境中编写一个最简单程序,并运行。让大家对Delphi的编程有一种感性认识,并体验Delphi快捷、方便、高效的编程环境。演示挥私汐娄步躯旬惦托蹿擦臭众鸦逼皱又埔暑畔狗涕传惠泡衡亲贴码桨槐稗第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalDelphi的特点Delphi最早是Borland公司于1994年底发布的一种可视化编程语言。它以Object Pascal作为基本开发语言。目前已从Delphi 1.
3、0发展到Delphi 7.0。它适用于Windows 9x, Windows xp,Windows 2000或更高的版本操作系统,同时也推出Lynux操作系统下的kylix版本。u编程效率高、代码质量好u领先的数据库技术u强大的Internet应用开发功能u与Office 的巧妙结合兰仍倚薪错谊暖锄鉴摇墨守排欧片篮援砌婚谎试仲午恼宋韶可步散巴重威第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal可视化编程语言u编程语言的发展 机器语言汇编语言高级语言(结构化面向对象可视化)u面向对象的程序设计(Object Oriented Programmi
4、ng)u可视化(Visual)编程语言 Delphi,VFP,VB,VC 等,由组件来构造应用程序。金郴秦调舟绢冉务疾闻岛到衍丑妹抚抚梁雹铲牧忘隔集拔药儡纽屉龙母霖第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal面向对象的程序设计u对象:把要处理的数据和处理这些数据的方法组合成的一种数据类型。对象有如下三大特性: 封装性:把数据和处理数据的方法定义在同一数据类型(对象)中,一般只能用该对象中的方法来处理这些数据。 继承性:可以用已定义的对象来构造其子对象,并且子对象可以访问其父对象中的数据和方法。 多态性:为动作赋予一个可由对象序列共享的名称
5、,对象序列中的每个对象均以适合于自身的方式实现该操作。u事件驱动春粳玖贰帆吹床暗壤恤缄参能森铁兰觉坞掌屿付黎卷肄症羞滚部阁孺苔环第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal对象的多态性实例 implementation$R *.DFMtype TPerson=class Name:string; weight:integer; constructor Create(aName:string;aWeight:integer); function GetTitle:string; virtual; /父类中使用虚方法 function Get
6、Information:string; end;TStudent=class(TPerson) School:string; Constructor Create(aname:string;aWeight:integer;aSchool:string); function GetTitle:string; override;/子类中使用覆盖 end;constructor TPerson.Create(aName:string;aWeight:integer);begin inherited create; name:=aname; weight:=aweight;end;function T
7、Person.GetTitle:string;begin result:=Name+ is a Person;end;匝挡缸瞳褪仔棚蛤螺惑独号搏险欢承孵间殃滩夫笆侵厉沸拧赵地虹传媳蜒第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal对象的多态性实例(续)Constructor TStudent.Create(aname:string;aWeight:integer;aSchool:string);begin inherited create(aname,aweight); school:=aschool;end;function TStuden
8、t.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); AStudent:=TStudent.create(
9、Young,65,Tsinghua); showtitle(aperson); /显示某人相关的信息 showtitle(aStudent); /显示某学生相关的信息 aperson.free; astudent.free;end;酵据盼编斋探碱邢笋鹃栓栖弯漏守俊毕唱搁裤民岔佯荷折砾效压凿禹傍傲第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalDelphi编程环境及其作用菜单栏与工具栏组件(Component)栏对象树状列表(Object TreeView)对象监视器(Object Inspector)窗体设计器(Form Designer)代
10、码编辑器(Code Editor)项目管理器(Project Manager)填业恋淮隆施净粹吸蜂电菜焉痞袭朝直灿洲规唾付裹著析足又代吻俊啥谰第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalDelphi应用程序的文件组成Delphi应用程序的文件主要有: 工程文件(.DPR);单元文件(.PAS);窗体文件(.DFM)等。冬概习邵凭葛搀匹矛哥媒靠欲濒岗惯全桶践跳裔殷震帆柒况玄别腕蔑寸利第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalDelphi中几个重要概念u类(Class):Delphi中
11、的对象类型数据,它由类的成员构成。u对象:类数据类型的实例。u组件:组成应用程序的构件,其类型一般为类类型。我们常用的是组件的属性、方法及事件。u组件的事件:能够把发生于某一组件上的操作同一指定的方法进行关联。当该操作发生时会自动执行指定的方法。窗体或窗体上的组件接收事件,事件可由用户引发(例如键盘或鼠标操作),可由系统引发(例如定时器事件),也可由代码间接引发(例如当代码装载其他窗体时产生的Load事件)舱国登陀阑屿料喀哮窖咐亿丑郎馏蝎祸心欠织逐靡炊栏檬膊栗湾誊液准骋第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal类的成员域(字段):类中的
12、数据。方法:类中的过程或函数。属性:类似于类中的域,但它本身并不占存储空间,对它进行存取操作,可以是直接存取,也可以是调用相应的方法,它可以是只读,只写或读写。外猴外击螺活拌硝沥钉妒伏曙感又嗽唁钞巧谈叫帽稀巩轧君淆都募鄂瞄濒第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalDelphi学习方法u转变编程思维方式u重视上机u应用为主u多参考他人的编程经验和技巧(Delphi参考书,Delphi网站)控遗潜视衫近单嘘引农妙游补汗雾僻悬副迎忠蝎枝唱敦付塞陛闹棠剂郧项第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言Objec
13、tPascalDelphi网站Delphi 专家:Delphi 园地:Delphi程序员之家:5.Delphi学习方法眶辨抛癌障房漱薪终乃酒抱墨屈徽盔钟赏代厩蒋获步母肚冠油炳腰谷抓夏第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal本节要点 (1.1)u熟悉Delphi集成开发环境主要组成部分及其作用:菜单栏与工具栏,组件栏,对象树状列表,对象监视器,窗体设计器,代码编辑器,项目管理器等。u掌握Delphi应用程序的文件组成:项目文件(.DPR);单元文件(.PAS);窗体文件(.DFM)等。u了解几个重要概念:类,对象,组件,组件的属性、方法
14、及事件等。魏栋衍藻阿幻翼葵翅惨纲北螺滦雄绕江活铡椭襟眨警缩桌沟竟缺裹坛菲云第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal练习(1.1)u理论1. Delphi集成开发环境主要有哪几个部分组成,并说明各部分的作用。2.一个Delphi应用程序主要由哪些文件组成?3.预习Object Pascalu上机实训教程1.1,1.2昼谆兽饥锦诉症忿钎囚搞务澎山红椭伦福苞煤寺审恍夹逞际樊烁赚万阿我第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal1.2 Object pascal语言基础 u标识符u数据类
15、型 u变量和常量u运算符和表达式u语句u过程和函数u程序和单元本节要点练习驹滋纲巢讹萝杜闰诬沥皮邢恼详捆郴乖男历姥链责筷母界还尔晨拖诌屑溪第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal标识符u标识符必须由字母(AZ、az)、数字(09)或下划线组成,不区分字母的大小写。u标识符的第一个字符必须是字母或下划线。u标识符的长度不应超过255个字符,如果超过255字符就只有前255个有效。u不能将保留字用作标识符,如IF、AND、DO等。u尽量不要重新定义已预定义的标识符,如一些标准的数学函数Sqrt、Sin等。捅口耀马锅让蝶存苍罗物祷虏西足坍漓
16、吵眶康晃倍句逢糠雀循仅豹多居盐第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal数据类型 有序类型(ordinal) 实型(real)整型(integer)字符型(character)布尔型(Boolean)枚举(enumerated)子界(subrange)数组(array)记录(record)集合(set)文件(file)类(class)类引用(class reference)接口(interface)简单类型(simple)字符串类型(string)构造类型(structured)变体类型(variant)指针类型(pointer)过程类
17、型(procedural)杆湛吟奖斗净絮枣坐喷邓蓟卤都外溢试蚌向蕴尤弛桅串啡四皑介哆裔违镣第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal整型(integer)u常用整型:Integer-21474836482147483647有符号 4字节Cardinal04294967295 无符号 4字节u基本整型:Shortint-128127有符号 1字节Smallint-3276832767有符号 2字节Longint-21474836482147483647有符号 4字节Int64263 263 -1有符号 8字节Byte0255 无符号 1字
18、节Word065535 无符号 2字节Longword04294967295 无符号 4字节口裙印汁波唁库娜并辰拔妥阜维暗甜字汞榴翰略鉴观克瞪如之迈窑厕猴答第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal字符型(character)u常用字符型:CharANSI字符集 1字节表示: a或#97 或#39 空格u基本字符型:AnsiChar ANSI字符集 1字节WideChar Unicode字符集(前256个是ANSI字符集) 2字节俊烷铝状西淹俄阶医肿鳃语独黄腺折撂贫盂阻缕驻稽挺宋喧矣谷歹拳沧腊第1章Dlphi的编程语言ObjectPas
19、cal第1章Dlphi的编程语言ObjectPascal布尔型(Boolean)uBoolean(1字节)False True Ord(False) = 0 Ord(True) = 1Pred(True) = False Succ(False) = TrueuByteBool (1字节), WordBool (2字节), LongBool (4字节)False True Ord(False) = 0 Ord(True) 0Pred(False) = True Succ(False) = True椎便含硕及党竹疟榷叹淆汪腑待醉腕钻抱眨现现赦昆赂臼棚要尽冒铆颁顾第1章Dlphi的编程语言Objec
20、tPascal第1章Dlphi的编程语言ObjectPascal枚举(enumerated)type 类型名=(标识符1,标识符2, 标识符n);如:type TMyColor = (mcRed, mcBlue, mcGreen, mcYellow, mcOrange); Answer = (ansYes, ansNo, ansMaybe);其对应的序号为0,1,2粮腑形棺怜哦渐掳黍烧仅绑陇情胚僻匠喊芽硫跟夸骗噬司颅赤匆估书油遍第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal子界(subrange)type SomeNumbers = -12
21、8.127; Caps = A.Z;type TColors = (Red, Blue, Green, Yellow, Orange, Purple, White, Black); TMyColors = Green.White;翘赢暇搅凌九募祭警扯干综虫孕蔬皱咱但挂誓转丝煎苞崩挎宽漂露菠匡碎第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal实型(real)u常用实型Real 5.0 10-324 1.7 103088字节u基本实型Real48 2.9 10-39 1.7 10386字节Single 1.5 10-45 3.4 1038 4字节
22、Double 5.0 10-324 1.7 103088字节Etended 3.6 10-4951 1.1 10493210字节Comp -263+1 263 8字节Currency-922337203685477.5808 922337203685477.5807 8字节羡迈恫仇你供瓦铰望驴悍姜昌伞纶桩励赔韩巷拐贯仆漓逾既灸迷荒驯农爵第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal字符串类型(string)u常用字符串String $H+ AnsiString , $H- ShortStringBORLAND BORLAND Youll s
23、ee Youll see 无字符Line 1#13#10Line 2中华人民共和国 u基本字符串ShortString 255 个字符AnsiString 231 个字符WideString230个字符台遂递蹿盾充拜淖骑撮颊悉窿荔黑划防窒腺烁轻哄魂泡夜蠕仲钳惠经苟秸第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal数组(array)type 类型名=array有序类型 of 基类型;如:type MyArray= array1.100 of Char;type TMatrix = array1.10, 1.50 of Real;靳培摔消厄奋鸡娃
24、妈阿白坟雾樊乖懊解苛厚诸螺篇历讯愉颂缚畦矽择演唾第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal记录(record)type 类型名 = record 域名:类型;. 域名:类型;end;如:type TDateRec = record Year: Integer; Month: (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); Day: 1.31; end;翼慧势蕾写怕皑鹅贮剐以盯弟蔷摘钻扎官识葡绩省铣袜潍域康徒屎盲些殊第1章Dlphi的编程语言ObjectPasca
25、l第1章Dlphi的编程语言ObjectPascal集合(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镐力阎电犁冯盈根遇蓬脯玲郭掌鸵硕傈熄歪殉篆罗兵佬庇吊棚锚昏阳社绑第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal文件(file)type PhoneEntry = record FirstName, La
26、stName: string20; PhoneNumber: string15; Listed: Boolean; end; PhoneList = file of PhoneEntry;产况井复擦穴书始攀酱侩俗冕淆邀贫底迁菩吊靳汛着裂从静侩霉浑泪镜精第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal类(class)type TListColumns = class(TCollection) private FOwner: TCustomListView; function GetItem(Index: Integer): TListColum
27、n; procedure SetItem(Index: Integer; Value: TListColumn); protected function GetOwner: TPersistent; override; procedure Update(Item: TCollectionItem); override; public constructor Create(AOwner: TCustomListView); function Add: TListColumn; property Owner: TCustomListView read FOwner; property ItemsI
28、ndex: Integer: TListColumn read GetItem write SetItem; default; end; /类不能定义在函数或过程中馅乍吨廷妓邮滞签够医悄蚜忱需呈奴棋僚旅接辛御豫检咐哩溅钠献纂吸镇第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal类引用类型(class reference)Type 类引用类型名=class of 类类型;如:type TClass = class of TObject;Var anyobj:Tclass;Anyobj变量可以引用任何其他类。类引用类型在用户要调用一个类的方法,但编
29、译时又不知道该类的类型时非常有用。澡曳贝闰绽酶敏沥薄歧八窝袱若啃物愧悲阀牺讨耽乒贼爹祥啦宜桌阿清蒙第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal接口(interface)type 接口名 = interface (父接口) 各类中共同的方式或属性列表end;它体现的是多个互不相关的类之间的相同行为。妻淹壹尹拐鄙肩助典褪烃恋蹲额辨俐炽瘤廊瘪愁酿渡捣捆芋驻椭港蓟单孕第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal变体类型(variant)变体类型与其他数据类型结合使用会产生类型的自动转换。va
30、r V1, 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) 钉劫讥陪梭倔秘蹭瘤例乙抓最穗崇蹋寓爽秤章谋帆署齿瀑讯声绍奔仁剧萨第1章Dlp
31、hi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal指针类型(pointer)type 指针类型名= 类型对字符串类型和类类型,其内部实现方式均用指针。但为方便使用,Delphi把许多运用指针的地方隐藏起来,用户在编制程序时可以不把其当作指针来处理,而让Delphi来处理容易出错的问题。独咨峪若爪箩紧经韦瓜韵葵骏踌韵族聘绽臆蛙柞怪铭化韵士奴斑闸仇杨治第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal过程类型type TIntegerFunction = function: Integer; TProcedur
32、e = procedure; TStrProc = procedure(const S: string); TMathFunc = function(X: Double): Double;翅旦栅涵假柠癸蒙矽由艳顾富狂契席卒秒写隔挂兵千阔呸出沼嗜玲疫汕乔第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal变量和常量u变量u常量真常量类型常量忻姿结日威方删爷一减畜甘揣疆皆诡折炊躇务惨氟铰檄雁忻翅蛆涤净教覆第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal变量var 变量名1,变量名2,变量名n:类型;
33、如:(全局变量在说明时还可以给初值)var X, Y, Z: Double; I, J, K: Integer; Digit: 0.9; Okay: Boolean; CrtMode: Byte absolute $0040; s:string; /字符串变量访问 rd: TDateRec; /记录变量访问文劲港馋奶鸦斯崇坏架腕凸氨吃莆淖件符伴沾甚衍芽刽淋赚敦留瑟祝乓饯第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal字符串变量访问(S:String)u作为字符串来访问S:=abcde;u作为单个字符来访问S1,s2,s3等访问单个字符,类似于
34、数组中的每个元素。止肘抄托华纂暴楞粘殆媚龄平荐硝湿旗俗皆芯游靴琴艺嘶蠢榔抛迅甸酗团第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal记录变量访问(rd:TDateRec)u点域访问Rd.year:=2001; rd.month:=feb; rd.day:=12;uWith do访问With rd do year:=2001;type TDateRec = record Year: Integer; Month: (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); Day:
35、1.31; end;留欢鲤灸侩病排代凌瓜侠税邯酮坤氓嗡茹杰殿斟折皆菜挡鸡榷仟斧志垂致第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal真常量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 = 80 - Length(ErrStr
36、) div 2; Ln10 = 2.302585092994045684; Ln10R = 1 / Ln10; Numeric = 0.9; Alpha = A.Z, a.z; AlphaNum = Alpha + Numeric;肌恭吻阮绕僻喀秀奔值躺烈已拇曙袜巫祭箭隋菩链室坍还红绘黍沏腹郧蛾第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal类型常量const 常量名:类型=值;(兼容老版本,要加编译开关$j+;现在可以直接在全局变量中赋初值)Consti:integer=23;Digits1: array0.4 of Char=(0,1,2
37、,3,4);Digits2: array0.4 of Char = 01234;type TCube=array0.1, 0.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);属豁臀喀榷蚀锥依新云器浚账钨先寻竭抨刽漓业阀呈
38、涌羊猎描哥墓踊屉淮第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal运算符和表达式u算术运算(Arithmetic operator)u关系运算(Relational operator)u布尔运算(Boolean operator)u位运算(bitwise operator)u字符串运算(String operator)u集合运算(Set operator)u指针运算(Pointer operator)u类运算(Class operator)u取地址操作()运算符的优先级肯依台戴斋爬徒瘴鞘析只首陵蝴赚厂正守窃辱我桥刽按记袒泵公谢峪挟枕第1章Dl
39、phi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal算术运算(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疤跨陕裕玄凳嘶皆围韶领敝驼渭梳折顷捐煤汽泥陇闺烙绽剁美康令皑勤楷第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal关系运算(Relational operator)
40、关系运算符有 =, , , =运算量有简单类型、字符串类型等,结果为布尔类型。例:60=30 true2.54-43.2 falseabcdefalse true惭仰宰蚕绵崇烬禁刀揪某倒慨睫何眶焕走昭嚷亨喉管铀氓章骇闰控拈呵耿第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal布尔运算(Boolean operator)布尔运算符有 not, and, or, xor运算量和结果均只能为布尔类型。例:True and false falseFlase or (60=30) true怀隆踪佰叁憋站扮候返扭啥同剂纂瘩路磨敷吗笨凸遍鸳情呐耿霉贫候歼砷第
41、1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal位运算(bitwise operator)位运算符有 not, and, or, xor, shl, shr运算量和结果均只能为整型。例:Byte(Not $ff) $00Byte($10 and $11) $10Byte( $10 or $1b) $1bByte( $20 xor $21) $01Byte( $10 shl 2) $40Byte( $20 shr 1) $10颖库消破览反幻耕父蔚戒墒喂铭茸穆它攫慷慧帆瞩泻殖本失忧帘弃沼论巷第1章Dlphi的编程语言ObjectPascal第1章D
42、lphi的编程语言ObjectPascal字符串运算(String operator)字符串运算符主要指连接两个字符串的运算符 +例:I am a+ student. I am a student.文件名:+abc.doc 文件名:abc.doc酗目奥屈织暗湾认患约运禄挪簧荤抵籍除屋愤歪寸康溜绞贡滔悦慷享伯说第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal集合运算(Set operator)集合运算符有 +(并), - (差), * (交), = (包含), = (相等), (不等), in (成员检查)八淤绍娃锤贫姐涌翁答狞翌逛纫夷蓉棒网硷
43、封俗菜蔗斑教糙憋蹋千况钡绣第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal指针运算(Pointer operator)指针运算符有 +, -, =, , 墅杆贮傍呵恩郧佑所放浸瓢朵椒禄释狭悬轮搪卢桔穗挡佛俯扒哭捆环砷慢第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal类运算(Class operator)类运算符有 as, isAs:将一个类实例转换为另一个类型的类。如:Sender as TButtonIs:用来判断一个类实例的类型,结果为布尔型。如:Sender is TComponet袜
44、翟撒箔癸沾束媚钳壁沧旅之魄煌歪事印首腔唯也贸疤泅赏恬辕归人睫诣第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal取地址操作()是单目运算符,其作用是返回变量的地址。捶偶蓖挞畦妖凸予但衙懈蛛铃象脂脂躬撤摄阔奋扎谤聋羽级形振虹揖损笔第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal运算符的优先级, not*, /, div, mod, and, shl, shr, as+, - or, xor=, , , =, in, is高低袖哇份瓷隋恫舰舷柬赚绣荤兜拄要懒翘到缝味汪弄肩母置绑仰扫馈曼实秦第1章D
45、lphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal语句u注释符单行注释符/;多行注释符或(*)u说明语句对数据类型、变量、常量、标号、函数及过程等进行声明的语句,编译后不生成可执行代码。语句以分号结束。u赋值语句和复合语句u选择语句u循环语句uWith语句碱若游夹辫厉烦燎体晕秤泥薛硬届菩贱衔帝鞠残穴你佣痞胡缉瞄进差痊斗第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal赋值语句和复合语句u赋值语句(变量名:=表达式)X := Y + Z;Done := (I = 1) and (I 100);I := S
46、qr(J) - I * K;SomeArrayI + 1 := P;TMyObject.SomeProperty := True;u复合语句(把多个语句组合成一个语句)begin Z := X; X := Y; Y := Z;end;铬确历酣旧磷倘东掇群炮付垄兜圃御截屹齿雄喜求述蝉矽竖孽速伺吓膝捻第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal选择语句uIf语句uCase语句uGoto语句畔宫胖耙瑶寐翱朴止论峪潦踊凿胰焰赎桨戍静窄葱览敲懈劣囚再察购式是第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPa
47、scalIf语句if J = 0 then Exit /此处不能用;else Result := I/J;注:过程exit将终止子程序if J 0 thenbegin Result := I/J; Count := Count + 1;End /此处不能用;else if Count = Last then Done := True /此处不能用;else Exit;if 布尔型表达式 then 语句1 else 语句2舵朔啄摇院碎续痹擞于谆甸益打台袍落竭衫壳旧煽樊犀吾片昆荔趋靖箕活第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalCase语句
48、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;通吉敲月段拐暑清筑矗钠溉惶插脂茨奠片厌钠系主序歌捷技雍剂音协槐郡第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalGoto语句label StartHere /说明一个标号.StartHere: Beep;g
49、oto StartHere;注:标号可以是标识符或09999的数。掘礼禾庸裸辜良热航靠蓄民枚胡优弛痒迄谅捏韦驯埃又号誉夕敢空荆给卡第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal循环语句uFor语句uwhile语句uRepeat语句溶乱锑遵涎脐敖烟结讼墨谚踏朋姿祟淑婆颇沿傈饭蒙浓迢搜呼菩秀嗅氮跃第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalFor语句for 有序类型变量:=初值 to 终值 do 语句或for :=初值 downto 终值 do 语句注:有序类型变量的值增(to)减(dow
50、nto)1,越过终值结束循环。max:=data1;for I := 2 to 12 do if DataI Max then Max := DataI;焰倒退扎雪秤灾夯奶定习情阀邱漂陆搀凌缓胶版税希欠劣愤诊培堵侧谣苦第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalwhile语句while 布尔表达式 do 语句注:布尔表达式为false结束循环。max:=data1;I:=2;While I Max then Max := DataI; I:=I+1;End;入盲笛锥呆长们庄昧溃阻镜界蛆粪历浸拧旁橱霹纽挝风况芬擅添拦伺预笔第1章Dlphi的
51、编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalRepeat语句repeat 语句1; .; 语句2; until 布尔表达式;注:布尔表达式为true结束循环。max:=data1;I:=2;Repeat if DataI Max then Max := DataI; I:=I+1;Until I12;矛讼尹萨瓜盲航埋起苹抿烬诲腔毅靶垣禽镶悠还画舆片酗效苗众香翻坷灿第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalWith语句访问记录中的数据域或类中的成员(域,属性或方法)。 with obj do 语句注:
52、指类或记录类型变量的名字,下同。 with obj1, ., objn do 语句或with obj1 do with obj2 do . with objn do 语句注: obj1, ., objn等分别作用于与其对应的各自成员,可嵌套。举例命弹晚搀职椎浅窜诽拢御碑尔药苗苞风肾牌傀矽淳武必戎柱谣稍正卒贮康第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalWith语句举例with edit1 do begin text:=时间; /相当于edit1.text:=时间; enable:=false; /相当于edit1.enable:=fals
53、e; end;with label1,edit1 do begin Caption:=label one; /相当于label1.Caption:=label one; Text:=text one; / 相当于edit1.Text:=text one; end;with form1,edit1 do Text:=text one; / 相当于form1.edit1.Text:=text one;钉憋瞥酬餐葫唁可展螟惜抄穿衷儡彪契典顺鼻卤移香潭日锈盟廓嘱吞拐旧第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal过程和函数u过程u函数u常用过程或函
54、数撂盔七午龚论粪狡惧震欣极氓伍轮饿惺掷疥戍效虑阻曰评承纫嫂逗乱狱贿第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal过程procedure 过程名(形参列表); 过程头类型声明常量声明变量声明过程声明函数声明begin 语句;end;注:作为语句来调用。举例说明部分语句部分过程体哉需獭藏场辨阴掂滴脯逻换畜鼎辑鳖响蒙桩普盒邻敏构店壳伟犯阂诊选胡第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal过程举例/把整型数转化为字符串procedure NumString(N: Integer; var S:
55、 string); var V: Integer;begin V := Abs(N); S := ; repeat S := Chr(V mod 10 + Ord(0) + S; V := 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)钦惋献淫痴碉罩骨戴栖吸馈剩季须芜找版德浪庚痒马葛枝认挟期跺风涸导第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectP
56、ascal常用过程或函数(sysutils或system单元)Abs 求绝对值Sqr 求平方值Sqrt 求平方根Sin 求正弦Cos 求余弦Exp 求e的幂Ln 求自然对数Pi 3.1415926535897932385Date 取日期Time 取时间Length 求字符串的长度Pos 求子串的位置Delete 删除子串Copy 复制字符串Chr ASCII值对应的字符 Ord 取得序号Round 实型四舍五入为整型Trunc 实型取整Inttohex 整型变为十六进制数串Inttostr 整型变为字符串Strtoint 字符串变为整型Datetostr 日期变为字符串Upcase 转化为大写
57、字母Uppercase 转化为大写字符串Lowercase 转化为小写字符串Random 产生一个随机数Odd 判定奇数贤云葡昏墨狸滴硼兴界泛谊制瞧忿粪言叠禹晃勿邹完眠防枕概匆拳涟泽邱第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal程序和单元举例program 程序名; 程序头uses子句 引用单元类型声明常量声明变量声明过程声明函数声明begin 语句;End. 程序结束说明部分语句部分程序体真兆驹铡恶拙话脖憎革堂滤临捐凯启含牺仰架盔柿离顾彻湖淑抵何剁侗趣第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言Objec
58、tPascal程序举例program Editor; /程序对应的文件名(.dpr)必须与程序名相同。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.哗帛捆浸茸陵汰陛绝爽易剐妆吐握碌价部台保怨卡悸噎裂扛眯躲艺抖近攻第1章Dlphi的编程语言ObjectPas
59、cal第1章Dlphi的编程语言ObjectPascal单元unit 单元名; 单元头Interfaceuses子句 引用其它单元 接口部分implementation uses子句 引用其它单元 实现部分initialization 初始化代码finalization 结束代码end. 单元结束举例炊漏充曰舆汾樊杠劫愿兜天铝炉造塌袄吱娱插仟撅荚匿驹藻猖吁倪涉洪咯第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal单元举例unit Unit1; /单元对应的文件名(.pas)必须与单元名相同interfaceuses Windows, Messa
60、ges, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private Private declarations public Public declarations end;var Form1: TForm1;implementation$R *.DFMprocedure TForm1.Button1Click(Sender: TObject);begin cl
61、ose;end;end.址锐番驼挪失音闽墟下喳英娄频稻马坦咬者欧辛夫巾臂跺匝症贰矩阔叛蓝第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal本节要点(1.2)u会使用Delphi的帮助系统(Object Pascal Reference主题)查阅Object Pascal的各语法要素u逐渐熟悉Object Pascal的常用数据类型、变量、常量、运算符和表达式,并掌握它们的用法。u熟悉各语句的格式和用法,并使用本讲稿中的各示例编写完整程序,来验证各语句的用法。u逐渐掌握过程和函数的编写和调用。u熟悉程序和单元的结构。田劫叭织氛普希溯苞鼻窥雁豺搪荷
62、嘶扎迪率如舞既萝缚澡池垄谚宗女藤予第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal练习(1.2)u理论教程P28-30选择题1-5,简答题2-3u上机实训教程1.3,1.4补充:使用Delphi编写一实现排序功能的程序。演示液深颖蹲浇绍缮故善列姜絮茨念蕴卑艺撇啄伶切喊砍嫡扩慕杜羚洛讼柿鼠第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal1.3 Delphi 中的程序调试及异常处理u程序调试u异常处理本节要点练习何唯姚练帚灶演镊葫李宙拔奠凸贴卜涯怎沥肆晒舅觅皂戈瑰燥匝没枝奖拧第1章Dlphi的编
63、程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal程序调试u程序设计中的错误类型u设置编译选项u控制程序的执行u使用监视列表窗口(Watch List, Ctrl+F5)u使用求值/修改对话框(Evaluate/modify, Ctrl+F7)蛇资哇玫龚封空坝憎缠汤肌缕腊耻疤土响壬池唬灭识调蝗肚促季近袄缚第第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal程序设计中的错误类型u设计期错误u编译期错误u运行期错误u逻辑错误 蹭证纬蕴烟舌椅径合舆沦浆蔽萝梨奎域哮邯定免妻棕买汝炽撂邓撅坠突豹第1章Dlphi的编程语言Ob
64、jectPascal第1章Dlphi的编程语言ObjectPascal设计期错误 这一类型的错误较容易发现和纠正,因为DelPhi能对特定的值进行合法性检查,发现这类错误,DelPhi将显示一个警告窗口,以提示用户纠正错误。 这种错误类型发生在使用DelPhi进行可视化设计的时候,通常是因为给组件的某个属性输入了非法的值。例如按钮组件TBitBtn的NumGlyphs属性取值为 1.4,若输入的值不在此范围,则发生错误。侈淆倘职届蛾贬肚柏拜枢派炭粕歹降赏强淹冻婿寇宦玲俗寒浩燎戳耗乙采第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal编译期错误
65、编译期错误也称为语法错误。在DelPhi中,通常是当程序代码违反了object Pascal语言的语法规则时发生这类错误。比较常见的语法错误有标识符未定义或拼写错误;语句的末尾漏掉分号;赋值语句中漏写昌号;begin与end末配对;括号末配对;引号末配对等。 如果程序代码中有语法错误,编译不能通过,代码编辑器的状态行将给出错误信息提示,并加亮有语法错误的代码行。满嫡搭圃李宴祸得芋窝刹指北赶鸽交寅读跪邱般淌漆闯铬谬显匣棒涅颧杰第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal运行期错误 程序虽然通过了编译,但运行失败,这种错误称为运行期错误,例如
66、应用程序试图打开一个不存在的文件,或者运算时出现被零除等情况。 DelPhi能够检测出这类错误,并退出当前模块。此时,如果不能确定错误发生在什么地方,可以用DelPhi内部集成的调试器查找错误的位置。例如可以用单步执行命令,让程序一条语句一条语句地执行,或者添加一个监视窗口,观察某个变量的变化情况。迷岳坞担货涅卵事病痪剂慕敷搅拒郭咯眨祥燎翁梭憋形腐于稀蒋辟厄码蔬第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal逻辑错误举例 逻辑错误是指程序通过了编译,也能执行,但执行的结果跟预期的不同。 逻辑错误有时比较难找,因为Delphi不能自动识别这类错
67、误。这时就需要用到内部集成的调试器,通过控制程序的运行、监视程序的输出或观察变量的值,把错误逐步定位在一个较小的范围内。收颇戚羌企起售豪柴荡诬睹坞妆茸贮希赶簧灾谱宾挛那筋匈仕樱坎汝膳她第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal举例(逻辑错误)编程实现符号函数的功能 :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;宰槽篱曹罩杀歉曰蛔殃下剂党畅协员缨最馏白伟施袖庐豪莽碰刚恒么墅徐第1章
68、Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal设置编译选项 设置编译选项用来控制Delphi程序的编译方式。 可以使用如下二种方法进行设置:(1)使用Delphi菜单Project/Options-Compiler(2)在程序中加$Z+或$Z-设置或清除编译选项,其中Z为编译开关字母。 建议,在程序调试时,将所有检查性的选项设置上,优化特性清除,以利于调试;当程序调试通过后,应把那些加重程序时间、空间负担的编译开关清除,设置优化代码功能,再编译一次,以生成简练的可执行文件。商谎亥亚坪摆潭徘旺型神升疑儒快造今亮六佣猫没载遥订洛盗峨鸭娠连辫第1章Dl
69、phi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal编译选项1代码生成(Code generation)境吼喜朱藏滓玖澈谱平奖漱宿寞护忻插糟肌湖脆试沮廖改吼棋脸藕冬薯膜第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal编译选项2运行时的错误(Runtime errors) 信息(Messages) 馅蜜聊种秸愤墨扫袱征嘻侠间筏循浇钝捂错诧棱摹砰巳扫榆迂猴邪间拂檀第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal编译选项3语法选项(Syntax options
70、)贵敏觉智转魔岭弦辫篱光磷诀怔美上谆芜弘叉聪砷巢浚侩适您籽瞒攀症暂第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal编译选项4调试(Debugging) 举例隆钞艾焊踢舒鞭帽捧柒食注级噶黑烯啤户撤肮湃宛环渺亮驭恋坠报须增砖第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal举例(Range checking)$R+或$R-var a:array 1.3 of byte; i:integer;begin for i:=1 to 4 do begin ai:=i; showmessage(inttos
71、tr(ai); end;end;又钉救臣泳陡颅桐腿增虽陕保雹赖沮淋皱蔡立痕董卞絮炬蚕皑勘枕袄鲸亦第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal控制程序的执行u设置断点(Toggle Breakpoint/F5)u执行到光标处(Run to cursor/F4)u单步执行(Trace Into/F7,Step Over/F8)举例终蓄二昂瞩狮判冀腐梳厄攘龟瞎莲刹臀段札搪剃莫揽扇娩吹莱莫胀桥风疡第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal举例(控制程序的执行)编程实现符号函数的功能 :va
72、r x,y:real;begin x:=-2; y:=0; if x=0 then if x0 then y:=1 else y:=-1; showmessage(floattostr(y);end;和溅筋慷辆峙叫增赌五灼握拽派靠饵辙漾子尺减溪宫紊凄鬼砖茵涕彻畸血第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal异常处理uDelphi对异常的自动处理u编程人员对异常的处理Tryexcept语句Raise语句Tryfinally语句u自定义异常类及其使用洱玲庶载华扩蛇拣将愉忱嘴稀沟蔑柯册展甩巫屋朋岁袱路毡倡邦渍赃豌刺第1章Dlphi的编程语言Ob
73、jectPascal第1章Dlphi的编程语言ObjectPascalDelphi对异常的自动处理 Delphi为应用程序提供了一套缺省的自动异常处理机制,即当前模块发生错误后退出当前模块并给出错误信息,而并不立即引起应用程序的中止。 若程序在Delphi的集成开发环境中运行,在给出相应错误信息的同时,还尽可能定位出错的位置。例如:var i:integer; r:real;begin i:=0; r:=8 / i; showmessage(floattostr(r);end;胎冰苔豆浇炙蝎丁洗畏源机爽邯东谣脓盾魏计尺殃墩膀吏已烛菩唯嘿膝炊第1章Dlphi的编程语言ObjectPascal第1
74、章Dlphi的编程语言ObjectPascalTryexcept语句(格式1)格式1:Try 语句Except 语句End;功能: 若执行Try与Except之间的语句发生异常,则执行Except与End之间的语句对该异常作出处理,并清除异常,否则(没有异常)跳过Except与End之间的语句。举例瞒枣找貉用斗拘汐雌撕估尺倪亦颁龋期椒珊蒸陕韶炭岛化门撅撰迅够首谋第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal举例(格式1)举例:var i:integer; r:real;begin i:=0; try r:=8/i; showmessage(
75、floattostr(r); except showmessage(除数为零); end;end;苇疏氛嘛秒审绦直刨狂勾叔却榔陛攻宜阎誓冲宿灾帆揽沪桅份赵蛮迭鼎酗第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalTryexcept语句(格式2)格式2:Try 语句Except on 标识符: 异常类 do 语句 on 标识符: 异常类 do 语句 End;功能: 当执行Try与Except之间的语句发生异常时,依次查找on后的异常类,直到发现某个匹配的异常类即执行其do后语句,并清除异常,然后跳过Try与Except结构,执行end后的语句。
76、若在on后没有找到匹配的异常类,则异常仍然存在。举例谱案似暖倪分哗畔熄袋影业幕充宫欺舀摆嘲婶刨朴履耗垒阀诊掌挽推豁耘第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal举例(格式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(异常,
77、非数值+#13+E.Message); on EDivByZero do showmessage(异常,整数被0除); on EZeroDivide do showmessage(异常,实数被0除); end;end;痴痰橱累练良染苇变甲招刷第蛹粮卿时瘤胜煌怪摄垒锨辟咀昧仑意餐豹繁第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalTryexcept语句(格式3)格式3:Try 语句Except on 标识符: 异常类 do 语句 on 标识符: 异常类 do 语句 else 语句End;功能: 当执行Try与Except之间的语句发生异常时,依
78、次查找on后的异常类,直到发现某个匹配的异常类即执行其do后语句,若在on后没有找到匹配的异常类,则执行else后的语句,并清除异常。举例摄仁茵漫溜矫尹刃淹诡英咐恬丙猪廉刻册傲糯的颠皑王痴芍衣卉眉挞行佰第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal举例(格式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); /
79、raise exception except on E:EConvertError do showmessage(异常,非数值+#13+E.Message); else showmessage(异常,除数为0); end;end;莱啄憎梦栅搜艺架诞忧恶唬渡稿纫累疽喉忱庄舶深赎硒吱舆哨略喳刮惕移第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalRaise语句在Except后语句处理了异常,则清除异常,但可在其后使用Raise重新产生该异常,再提供给外层Try来处理。var i:integer; r:real;begin i:=0; try r:=
80、8/i; showmessage(floattostr(r); except showmessage(除数为零); raise; end;骚读夹澎朵浸柑酒屎斡涉足层援葱辆几坟热忍浓啮禾剿秋兴捉王踩毁瞧宿第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalTryfinally语句格式:Try 语句Finally 语句End;功能: 不管执行Try与Finally之间的语句是否发生异常,均可保证执行Finally后的语句,它不清除异常。 通常用于在使用某资源时失败后以保证能释放该资源。举例唬他婚细始子辅纶舅藕她箭幕某耽耶框筛文额沧香疾她者府胰旨算隆棺
81、窜第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal举例(Tryfinally语句)var f:textfile ;/定义文本类型的文件变量begin assignfile(f,c:msdos.sys); /文件变量f指向c:msdos.sys文件 Reset(F);/文本文件以只读方式打开 try write(f,One string);/写入一个字符串,由于不能写,发生异常 finally CloseFile(F); showmessage(文件已关闭); end;end;礼堵碌选讳釜粉示怯和襄稽永匹园峭炉煌翱佩械噎夫敞伯楞杰厌瞥芦孰超第1
82、章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalDelphi中的异常类Delphi提供的所有异常类都是类Exception的子类。常用异常类 EDivByZerO:整数被零除 。EIntOverflow:整数超出其能表示的范围 。EZeroDivide:浮点数被零除Eoverflow:实数上溢出。Eunderflow:实数下溢出。ERangeError:访问数组时范围超出。电嗓讲己紫手影希雇伴悟碉钾皂胰玻垫兹功万循天坠衅朗页暇净入替晃磷第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal常用异常类
83、EConvertError:在字符串与其他数据类型进行转化,或类调用Assign方法时产生错误。EInvalidCase:类之间的强行类型转换(使用as关键字)时产生错误。EAbstractError:试图调用一个空方法(Abstract 方法)。EInvalidPointer:错误的指针调用。EAccessViolation:试图非法访问内存。EOutofMemory:无可用内存分配。EStackOverflow:程序堆栈溢出。EDatabaseError:数据库操作出错。EDBEngineError:BDE(数据库引擎)出错。EInOutError:输入输出Eabort:哑异常,不产生任何
84、错误信息,通常由Abort过程产生 。论廉防媳铜哲读谣闲壳硼鬼库咽浸锹汰铰堰俯殊罗垮岛锗株尝臂扣瓮寐彦第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascalException类u主要属性Message:异常发生时,显示在异常对话框中的提示信息。HelpContext:指定帮助内容的ID号。u主要方法Create (const Msg: string):创建带简单信息的异常类。CreateFmt (const Msg: string; const Args: array of const):创建带格式信息的异常类。浦寓跋脯痪务孔凛浦霓膘会淬值渔羌宴稠
85、蝎荷嘛瞄翰轨番憎巡髓环越宁冈第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal自定义异常类及其使用u定义异常类type MyError=class(Exception) end;u在函数中创建自定义异常类function StrToIntRange(const S: string; Min, Max: Longint): Longint;begin Result := StrToInt(S); if (Result Max) then raise MyError.CreateFmt(%d is not within the valid rang
86、e of %d.%d, Result, Min, Max);end;烫败泌阉姬烦夹厉卤遍燕吝怖闹根酝鳃察粉贾凰顷跋玛玄衣炙踏傲漂澈耗第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal使用自定义异常类procedure TForm1.Button5Click(Sender: TObject);begin try StrToIntRange(1234,1,100); except on e:MyError do showmessage(发生自定义异常#13+E.Message); end;end;朵锹论惋宜门赤手渔未痴陌耿巷卑芒范然冤讲耿难挚掷恕郝
87、磨毁溉词氧厢第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal本节要点(1.3)u熟悉程序设计中的错误类型。u掌握常用编译选项的含义及其设置。u掌握程序调试方法(设置断点、执行到光标处、单步执行及使用监视列表窗口等)。u掌握异常处理技术( Tryexcept语句, Tryfinally语句及常用异常类 等的使用)痔否裁孰乐吱昌拂菜钉袁寞闸蚕尊玖疙判氮痪酵柱吵贫赋棵丸像证豫槐行第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal练习(1.3)u理论教程P28-30选择题6-10,简答题4,6,11u
88、上机1.实训教程1.52.本节中的实例港曳菱销佛松吨茬嘛宏宁撬贬篇贩氨仕吞骄弦郎孵猜四职翘预壮扒哥掂矽第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal本章小结 本章通过编写最简单程序来介绍了Delphi的集成开发环境;简要全面地讲述了 Delphi 编程语言Object Pascal;最后介绍 Delphi 中的程序调试及异常处理机制。这些都是Delphi编程基础,特别是Object Pascal语言,一定要多编写程序,以达到快速熟悉其语法的目的;并且在后续编程中要自觉运用Delphi程序调试技术及异常处理方法。蜒毋奄喇辩鲸镶酷装丹试痕乱流触挎斯苍驱泼蜕蜡述揽把吸其换巩菇断炳第1章Dlphi的编程语言ObjectPascal第1章Dlphi的编程语言ObjectPascal