delphi 5 why sample
Delphi 中的程序调试及异常处理
编译期错误
编译期错误也称为语法错误。在DelPhi中,通常是当程序代码违 反了object Pascal语言的语法规则时发生这类错误。比较常见的语法错 误有标识符未定义或拼写错误;语句的末尾漏掉分号;赋值语句中漏 写昌号;begin与end末配对;括号末配对;引号末配对等。
如果程序代码中有语法错误,编译不能通过,代码编辑器的状态 行将给出错误信息提示,并加亮有语法错误的代码行。
Try…except语句 Raise语句 Try…finally语句 自定义异常类及其使用
Delphi对异常的自动处理
Delphi为应用程序提供了一套缺省的自动异常处理机制,即当前 模块发生错误后退出当前模块并给出错误信息,而并不立即引起应用 程序的中止。 若程序在Delphi的集成开发环境中运行,在给出相应错 误信息的同时,还尽可能定位出错的位置。
I
Overflow checking 检查整数操作是否溢出
Q
信息(Messages)
选项 Show hints
说明 使编译器显示提示信息
Show Warnings
使编译器显示警告信息
编译选项3
语法选项(Syntax options)
选项 Strick var-strings
Complete Boolean eval
举例
举例(格式1)
举例: var i:integer; r:real; begin i:=0; try
r:=8/i; showmessage(floattostr(r)); except showmessage('除数为零'); end; end;
Try…except语句(格式2)
格式2: Try
Try…except语句(格式3)
Delphi学习资源
Delphi学习资源Delphi ?我和Delphi的缘分 ?从刚进大学的时候起就开始摆弄这玩意,也是第一门我真正会用的编程语言。
我接触的第一个Delphi版本是Delphi5,可惜买的D版碟质量实在太差,我每次都得费九牛二虎之力才能将它成功的安上。
后来出了D6,我就直接改用了D6。
D6给我最直观的感觉就是界面变漂亮了,我喜欢D6的界面风格。
D6相比D5,多了一个树形的窗口控件导航窗口。
我不知道别人怎么看,但我看来,这个东西实在是太方便了。
这也是我受不了D5的一个重要原因。
D6后是D7。
D7相比D6改动很小,主要只是加了几个控件和一些bug修正等。
在坚持用了一整D6后,我切换到了D7,然后一直用到了现在。
D7有个比较不爽的地方,工程图片和普通窗口的图标长得一样(或是太象?),要从一堆文件里找出那个dpr还是有些伤神。
D7后,Borland出了那个让人莫名其妙的D8。
我用delphi,主要是看中它优秀的win32程序开发能力,而D8只支持.NET,让它变得没有任何吸引了。
我甚至都怀疑是否真的会有人去用D8。
我甚至都忘了,我是否装过D8。
D8甚至连鸡肋都算不上。
此后的2005、2006、2007,都没有太大的惊喜。
这些版本主要的改动还是在IDE上,但我已经习惯了D7的IDE,而且很不喜欢新IDE的配色方案,图标也过于粗糙。
虽然对Delphi的unicode版本还有些许期待,但我想或许我和Delphi已经缘尽于此(D7)。
我还会继续关注Delphi的消息,但已无太多意义。
我写的和Delphi相关的Blog YY部分 ?发现我发布的和Delphi相关的Blog都和技术没啥关系,而且有不少牢骚,在这里就不毒害大家了。
Delphi网站 ?大富翁 ?链接这个应当是国内最大/最早的Delphi专业论坛了。
这个论坛也曾高手云集,但到了后来处于各种各样的原因(Delphi势微也是一个方面),早期的大侠们已经很少再踏足大富翁,新进的成员又难成气候。
delphi源码
Delphi源码1. 简介Delphi是一种面向对象的编程语言,由Borland公司于1995年推出。
它基于Object Pascal语言,并结合了图形化用户界面设计和RAD(快速应用程序开发)工具。
Delphi主要用于Windows平台上的应用程序开发,特别适用于快速构建桌面应用程序。
Delphi的源码是指Delphi程序的源代码文件。
在Delphi 中,我们可以通过源码文件来编写程序的逻辑和功能。
这些源码文件包含了程序的各个模块和单元的实现代码,以及相应的声明和定义。
2. Delphi源码文件格式Delphi源码文件通常以.pas为扩展名,表示Pascal源码文件。
每个源码文件通常对应一个单元(Unit),用于实现一个代码模块。
在Delphi中,一个工程可以由多个单元组成,这些单元可以相互引用和调用。
Delphi源码文件以UTF-8编码保存,可以使用任何文本编辑器打开和编辑。
在Delphi的集成开发环境(IDE)中,我们可以使用Delphi自带的代码编辑器来编写和编辑源码文件,它提供了丰富的代码提示和自动补全功能,以提高开发效率。
3. Delphi源码的语法Delphi的源码是基于Object Pascal语言的,具有类似于其他编程语言的基本语法。
以下是一些Delphi源码的语法特点:3.1 变量声明在Delphi中,我们可以使用var关键字来声明变量。
例如:vari: Integer;s: string;3.2 过程和函数Delphi中可以定义过程(Procedure)和函数(Function)来实现一段可复用的代码逻辑。
过程和函数可以有参数和返回值。
例如:procedure ShowMessage(message: string);beginMessageBox(0, PChar(message), '提示', MB_OK); end;function Add(x, y: Integer): Integer;beginResult := x + y;end;3.3 类和对象Delphi是一种面向对象的编程语言,支持类和对象的概念。
5Why分析工具实例讲解
PRACTICAL PROBLEM SOLVING 实际问题解决Introduction 介绍In the Delphi organization, a common problem solving process is used to analyze and solve quality problems. 在德尔福组织里,一个共同的问题解决过程是用于分析和解决质量问题。
There are four major parts of the process: 这有过程中四个主要部分∙Grasp the Situation 掌握情况∙Cause Investigation 调查情况∙Problem Correction 问题纠正∙Prevention through Errorproofing♦Grasp the Situation 掌握情况During the first part of the process, you:∙Identify the Problem 识别问题∙Clarify the Problem 阐明问题∙Locate the Point of Cause (PoC)♦Cause Investigation 原因调查In the second part of the process, you:∙Conduct a “5-▪for the specific problem 特殊问题▪▪for why the “system” allowed the problem to occur为什么系统允许问题发生♦Problem Correction 问题纠正In the third part of the process, you: 在过程的第三部分,你要:∙Take specific action to correct the problem. At a minimum, short-term temporary measures are required to protect the customer.采取特殊措施改正问题,至少,要求用短期暂时的方法去保护顾客。
Delphi5企业级解决方案及应用剖析12
第四篇自动控制与监测系统解决方案及应用剖析◆自动控制与监测系统编程技术◆串口通信程序应用剖析◆硬件接口程序应用剖析第12章自动控制与监测系统编程技术自动控制与监测系统广泛用于电信、电力、铁路、金融、证券、交通等领域,涉及机房动力环境及机房设备集中实时监控管理、工业自动化等诸多方面。
我们通过利用Delphi 5在Wi n32环境下开发硬件接口应用程序的方法可以实现实时控制和串口通信,同时Delphi 5的强大功能还提供了混合语言编程技术和复杂数据结构编程技术。
图1 2-0-1所示的机房动力环境及机房设备集中实时监控管理系统就是一个典型的应用实例,它采用了先进的通信技术和采集控制技术,实现了对机房内的动力设备、环境以及其他设备进行集中监控,并通过多种通信线路解决监控信号的实时传输。
图12-0-1 某集中实时监控管理的系统原理图该实时监控管理系统采用了多C P U分布处理、关键配置数据分布式存储技术、软件系统采用动态代理结构。
具有如下功能:• 实时监控功能—实时数据采集、设备遥控,对所监控的每一个点可采集数据。
提供遥控功能,使维护人员在监控中心即可对远端设备进行控制。
• 数据处理功能—历史数据采集入库、可进行查询分析。
生成各种统计报表、图表。
显示实时曲线,便于用户分析。
• 系统管理功能—用户可以自由组织设计界面、系统日志、人员管理、系统配置等。
• 系统结构—监控中心的计算机网络采用C l i e n t/S e r v e r结构,由服务器、监控台、前置机、打印机等组成。
采用Wi n d o w s网络操作系统,网络数据库采用Microsoft SQL Server、S y B a s e、O r a c l e等。
监控网内采用T C P/I P协议通信。
上述系统将会涉及到在Wi n32环境下开发与硬件接口的应用程序,本篇将主要讨论用Delphi 5开发上述应用程序的方法。
当前自动控制与监测系统软件的开发方向是模块化、组件化编程;用面向对象的编程方法;使用设备驱动程序,最好做到软件与设备无关。
delphi面试题及答案
delphi面试题及答案Delphi是一种功能强大的编程语言和集成开发环境(IDE)。
在进行Delphi相关职位的面试过程中,常常会遇到一些特定的问题。
本文将提供一些常见的Delphi面试题目以及它们的答案,帮助读者更好地准备自己的面试。
以下是一些常见的Delphi面试题及其答案:1. 请解释一下Delphi是什么以及它的特点。
Delphi是一种使用Object Pascal作为主要编程语言的集成开发环境,由Borland公司开发。
它具有易于使用、快速开发和可移植性等特点。
Delphi还支持面向对象编程和可视化设计,使开发人员能够轻松创建图形用户界面(GUI)应用程序。
2. 请解释一下Delphi中的VCL(可视化组件库)是什么,并举例说明。
VCL是Delphi中的一个重要概念,它是一组可视化组件的库,开发人员可以使用这些组件来创建各种GUI应用程序。
例如,TButton是VCL的一个组件,用于创建按钮。
TListBox用于创建列表框。
开发人员可以通过拖放这些组件到窗体上来设计他们的界面,然后使用代码来实现组件的行为。
3. 请解释一下Delphi中的事件和事件处理程序是什么。
在Delphi中,事件是指在应用程序中发生的操作或者改变的特定瞬间,例如按钮被点击或者鼠标移动。
事件处理程序是一段代码,用于响应和处理特定的事件。
通过将事件处理程序与相应的事件关联,可以在事件发生时执行特定的操作。
4. 请解释一下Delphi中的单元(Unit)是什么,并举例说明。
在Delphi中,单元是一个代码模块,用于组织和管理代码。
可以将一个功能相关的代码放在一个单元中,并在需要的地方引用它。
例如,可以创建一个名为MathUtils的单元,其中包含一些数学相关的功能,然后在其他单元中引用这个单元以使用这些功能。
5. 请解释一下Delphi中的异常处理是什么,并举例说明。
在Delphi中,异常处理是一种机制,用于处理程序运行过程中可能出现的错误。
Delphi5企业级解决方案及应用剖析03
第3章Delphi 5企业级应用技术要点3.1 组件和VCLD e l p h i中不但有相当多的标准例程,还有一系列数量更大、更重要的的类。
其中一些是组件类,展示在Components Palette上,另一些是更为通用的类。
D e l p h i的系统库被称为Vi s u a l Components Library(可视化组件库)或简称为V C L,尽管它不仅仅包括了组件的内容。
本节中,我们通过对一些通用类的概括,集中介绍D e l p h i类库的结构,同时还将深入到了V C L的一些复杂的技术细节。
3.1.1 Object类D e l p h i的核心是类的层次结构。
系统中的每一个类都是TO b j e c t的子类,所以整个类的层次结构只有一个根类。
这允许用户在系统中用TO b j e c t数据类型替代任何类的数据类型。
例如,事件处理程序通常有一个TO b j e c t类型的S e n d e r参数,这意味着S e n d e r对象可属于任何类,因为每个类都是从TO b j e c t类派生出来的。
这种方式的一个典型缺陷是,在对象上进行操作时用户必须知道它的数据类型。
事实上,O b j e c t类型的变量或参数只能应用于由TO b j e c t定义的对象方法和属性。
例如,如果该变量或参数引用一个T b u t t o n类型的对象,用户将不能直接访问它的C a p t i o n属性。
解决这种问题的方法是,使用i s和as RT T I操作符来检查数据类型并作实际的类型转换。
例如,如果TO b j e c t类型的S e n d e r参数应用了一个按钮,用户可以这样写:(Sender As Tbutton).Caption这种方法的好处是,当类型失败时,D e l p h i会引起异常,这样可以保证代码的安全。
TO b j e c t类有一些可以用于任何对象的对象方法,包括那些用户定义的类中的对象。
--DELPHI基础教程--第二十章开发Delphi对象式数据管理功能(五)
--DELPHI基础教程--第二十章开发Delphi对象式数据管理功能(五)-->DELPHI基础教程-->第二十章开发Delphi对象式数据管理功能(五)后一页前一页回目录回首页第二十章开发Delphi对象式数据管理功能(五)20.3.1.1写DFM文件的过程:WriteComponentResFie该过程带有两个参数FileName和Instance。
FileName参数指定要写入的DFM文件名,Instance参数是TComponent类型的,它指定要写入的部件名,一般是TForm对象的子类。
该过程将Instance部件和其拥有的所有部件写入DFM文件。
这个过程的意义在于,可以在程序运行过程中产生Delphi的窗体部件和在窗体中插入部件,并由该函数将窗体写入DFM文件,支持了动态DFM文件的重用性。
该过程的程序是这样的:procedure WriteComponentResFile(const FileName: string; Instance:TComponent);varStream: TStream;beginStream := TFileStream.Create(FileName, fmCreate);tryStream.WriteComponentRes(Instance.ClassName, Instance);finallyStream.Free;end;end;函数中,用FileStream创建文件,用Stream对象的WriteComponetRes方法将Instance写入流中。
20.3.1.2 读DFM文件的函数:ReadComponentResFileReadComponentResFile函数带有两个参数FileName和Instance。
FileName参数指定要读DFM文件名,Instance参数指定从DFM文件中要读的部件。
该函数从DFM文件中将Instance和它拥有的所有部件,并返回该部件。
Delphi程序设计教程 教学课件 作者 吴文虎 等 05-大学课件-
5.3 组件开发技术
5.3.3 开发自定义组件的具体步骤
1 确定祖先类。通过前面的学习,我们明白了VCL的层次结构,由此也就知道了 ,其实每一个可视组件都有其父类的。所以在开发可视组件时,先要确定它 的父类(也叫祖先类)。
2 创建组件的单元文件。组件的具体实现是放在一个单元文件里,在这个单元 文件里定义了组件的属性、方法、事件及具体实现。
end; procedure TForm1.Button1Click(Sender: TObject); begin
…… end; procedure TForm1.Button1Click(Sender: TObject); begin Button2.onclick:= Button1Click; End;
5.1 VCL的层次结构
5.1.3 VCL的通用属性、方法和事件
(2)VCL组件的方法
Type Tmytry=class Male: Boolean; Gender: string; Procedure Judgethegender;
end; Procedure Tmytry.Judgethegender; Begin
If male then Gender:=’I am a man’;
Else Gender:=’I am a woman’;
end;
5.1 VCL的层次结构
5.1.3 VCL的通用属性、方法和事件
(3)VCL组件的事件
type TForm1 = class(TForm) button1: Tbutton; button2: Tbutton; procedure TForm1.Button1Click(Sender: TObject); procedure TForm1.Button2Click(Sender: TObject);
5why presentation
Delco Electronics Systems
5
Problem Solving 5-Why Benefits
Satisfies customer requirements
– Clearly communicates the determined root cause – Accounts for the lack of ability to detect the problem – Highlights potential systemic problems
PROBLEM 1 - WHY? 1 - CAUSE 2 - WHY? 2 - CAUSE 3 - WHY? 3 - CAUSE 4 - WHY? 4 - CAUSE
General 5-Why Diagram
5 - WHY?
5 - Root Cause 2
11/16/00
Delco Electronics Systems
Other diagnostic techniques (Juran’s Quality Control Handbook)
– – – – – – – Brainstorming Nominal group technique Storyboarding Tabular arrangement Cause-and-effect diagram (fishbone) Force field analysis Affinity diagram – – – – – – Structure tree Interrelationship digraph Program decision process chart Matrix Check sheet Pareto analysis
F-MA-QA002-LYP-问题解决表PROBLEM-SOLVING-FORM
1. 顾客问题描述描述顾客遇到的问题。
包括带给顾客带去的延误和不便,谁发现的,检验的方法,地点和缺陷品的数量。
从顾客的角度描述问题。
顾客名称和地址:报告日期:顾客问题描述:顾客抱怨编号:铁姆肯工厂GQTS 编号:客户项目顾客联系人:其它受影响的型号?如果有,请列出型号.是否顾客型号(s): Timken原材料型号(s);分供方型号(s):对顾客造成的困难(交期延误,错过船期,停线,产量减少, 顾客分选, 等.):发现人:检验方法:发现地点:缺陷件数量:顾客需求及时间点Timken 产品号标识的日期有缺陷的零件: 出货信息发出要求的人: 要求内容要求日期: 分供方:其它TIMKEN工厂是否有关联:是否高关注事件?(是或否)8D 发起人: 指定的处理部门:8D 小组组长:组长的电话、传真和E-Mail是否发出DMR/RMA ? DMR/RMA编号DMR/RMA 日期:在填写该表格之前要确认顾客是否指定表格Timken 内部网质量系统主页上有与客户网站的链接有的顾客要求特殊的文件作为报告的附件和补充。
顾客特殊文件能通过相关的链接看到。
Delphi 5 Why2. 遏制措施在调查的同时,要实施问题遏制和短期纠正措施。
此时应为合格确认产品产出的启始点。
(遏制措施必须保持到永久纠正措施被验证和顾客批准。
)2e. 其它遏制措施及对策(包括如过程通知,即质量警报,小组会议,临时过程更改,临时检验查验证日志, 零件标识等和分供方遏制措施,3. 纠正措施小组确定小组组长和成员。
1至3步骤必须在“要求日期”的24小时内完成。
4a. 调查确定问题的根本原因通过确定能够解释问题为什么发生的所有潜在原因,来描述什么导致这个问题。
描述/解释用于确定为什么产生缺陷和为什么缺陷流出的方法。
即 5 个为什么分析, 是–否分析,数据分析,因果图等。
通过每一个潜在的原因的分别检测来验证问题的根本原因。
一定要问“是什么有了改变?”4b. 问题综述和根本原因基于上述工具的应用及采取的措施,重新陈述问题,形成最终的描述并说明根本原因。
DELPHI5高级技巧
给DELPHI添加一个创建程序组和程序项的控件摘要:在DELPHI中找不到直接可创建程序组(GROUP)及程序项(ITEM)的函数或过程,这给需要自己动手编写安装程序的用户增加了不少工作量,笔者参考有关资料,利用DDE功能编写了一个控件可实现常用的一些功能,这些功能包括:创建一个程序组并立即向其中添加程序项,向一个已存在的程序组添加程序项、从程序组中删除程序项等。
正文:不知为何,在DELPHI中竟找不到直接可创建程序组(GROUP)及程序项(ITEM)的函数或过程,这给需要自己动手编写安装程序的用户增加了不少工作量,笔者参考有关资料,利用DDE功能编写了一个控件可实现常用的一些功能,这些功能包括:创建一个程序组并立即向其中添加程序项,向一个已存在的程序组添加程序项、从程序组中删除程序项等。
本控件的使用方法:在DELPHI的Componet菜单中,执行“Intsall Componet”命令,将本控件添加到Palette中,将会在Palette中出现一个新的控件卡“MyComp”,将其放置到窗体中就可以使用了。
使用举例:添加本控件到窗体后,在窗体中添加一个按钮,双击按钮写如下代码://创建“我的程序组”并添加两个程序项with progMan1 dobeginopenProgramManager;createGroup('我的程序组');//语法:应用程序路径、名称、图标addItem('c:\WINDOWS\Notepad.exe','记事本','');//上句省略了图标,使用应用程序本身的图标addItem('c:\MYprog.exe','我的程序','C:\ICON\ICON2.ico');//上句使用指定的图标closeProgramManager;end;向已存在的程序组添加程序项:with progMan1 dobeginopenProgramManager;//先打开程序组再添加ShowGroup('我的程序组');addItem('c:\MYprog1.exe','我的程序1','C:\ICON\ICON1.ico'); closeProgramManager;end;删除程序组中的程序项:with progMan1 dobeginopenProgramManager;deleteItemFromGroup('我的程序组','记事本');closeProgramManager;end;下面是控件代码,比较简单,一看就明白。
奇淫怪巧之在Delphi中调用不申明函数
奇淫怪巧之在Delphi中调用不申明函数奇淫怪巧之在Delphi中调用不申明函数前一阵子,研究了一段时间的Win32Asm,研究到后来发现Win32的ASM实际上还是和C版的介绍的一样。
甚至还封装了一个简版的类似VCL库结构框架的32ASM结构库,不过搞着搞着就没兴趣了,也没继续往下深入,唉!发现年龄越来越大,人也越来越懒。
休息了好长一阵子,在乱七八糟的东西乱弄一堆之后,总算发现了一个能有点用处的东西,于是就欣欣然跑来记录一下日志博客以为备份。
我们都知道在Delphi,VC等这类静态检测形的语言,如果要使用一个函数,必须要先申明一下此函数结构,然后调用的时候,编译器才会根据申明的函数结构进行编译产生数据以做调用。
比如MessageBox这类函数,都是在Windows中申明过了,调用的时候可以根据声明来编辑代码。
对于使用Delphi这类使用静态预先编译检查的来说,这种方法非常适用简单,但是如果假设,俺们需要自己设计一个脚本语言,然后在这个脚本语言中,我们需要可以调用DLL中的函数,于是我们也给设计一个类似于Delphi的这种预先声明的模式,然后脚本中调用,甚至,还可以不用预先申明,而只用根据参数以及函数名称来调用这个dll中的函数,那么此时我们在脚本中写的东西,我们在Delphi中就并没有预先声明的这个函数结构了。
按照常规来调用自然不可行,如果说对应每个DLL中的函数给声明一个函数出来外部,这个更是不可能,因为DLL是不可控的,我们并不知道用户用脚本需要调用什么DLL,以及调用什么DLL中的函数。
那么此时,我们如何来调用这个DLL中的函数,让脚本中的实现可用呢。
我们先来分析一下,首先脚本调用肯定会要知道DLL名称,然后会输入函数名称,然后就是函数参数了,变相来说,就是我们有DLL名可以获得DllHandle,有DLLHandle和函数名称我们可以获得函数地址CodeAddr。
就是说比如我们设计一个脚本,在脚本中可能输入如下:dll=DllObject('user32.dll');dll.MessageBoxW(0,'asf','afd',64);那么我们在Delphi中能获得的就是MessageBoxW这个函数的函数地址以及传递进入的参数,但是我们并不会声明这个函数。
Delphi5开发多层应用系统处理大数据集的方法分析
社会科学Delphi5开发多层应用系统处理大数据集的方法分析吕鹏辉(天津凯立达众创空间孵化器有限公司,天津 300000)摘 要:多层分布式系统的开发,在很多种情况下,都需要编写具有超强数据处理能力的应用程序,在实际工作中,需要从程序服务器中将数据下载下来并将其输送到客户端,数据的传送主要是通过广域网来实现,客户端在通常情况下反应速度会比较慢。
为了进一步优化系统性能,对大数据集处理的方法进行深入分析,十分必要,可以极大限度增强系统的数据查询效率。
关键词:数据查询;数据库;多层分布引言:多层分布式系统的开发在目前受到了业界的一致认可,多层分布是一种较为理想的应用系统结构。
Delphi5在分布式系统的应用已经很深入了,对各种系统结构都可以起到很好的支持作用。
利用Delphi5开发的系统相对比较简单,其本身带有的VCL组件会给系统开发者带来一定的便利条件,让原本复杂的系统开发变得简单,对其数据处理方法进行研究具有积极的意义。
一、对TCL 的属性进行巧妙设定在内定(默认)上系统是把PacketRecords的参数设定为-1,当参数数值为-1时,则代表应用程序可以一次性将全部数据转移到客户端,完成数据的传输工作。
但是在实际应用中依然会存在许多的困难,当要对大量的数据进行处理时,将参数设置为-1其实并不是很理想的设计方法,甚至可以说是错误的。
因为这样的设置方案,会浪费大量的时间,并且占据太多的存储空间,在实际工作中经常会遭遇程序执行错误的情况,数据处理效果得不到保证。
例如:当进行十万条记录的表格处理时,在这个表中,每一个记录的大小都是1K 字节,如果将这些数据一次性全部移交到客户端,就有占据大量的内存,粗略估计一下,可以占据100M的内存,因为客户端每天都需要处理大量的信息,这个存在十万条记录的表格只不过是很小的一部分,如果都采用这样的方式,那么对客户机的存储要求就要高出很多,这是很难实现的,并且占据的空间过大,还会影响信息处理的效率,导致系统的延迟。
Delphi5应用程序设计实例第二部分
书名:Delphi 5 应用程序设计实例编著者:王小华页数:256页开数:16开字数:419.2千字出版日期:2000年3月第一次印刷出版社:电子工业出版社书号:ISBN 7-5053-5799-9定价:28.00元内容提要本书从应用的角度出发,以一个完整的应用系统为例,讲述了利用Delphi编写应用程序的方法。
从分析应用系统开始,循序渐进,由浅入深,充分利用了Delphi编程的优秀功能,广泛涉及了编写应用程序的技巧,并毫无保留地公开了应用系统的源程序。
本书适用于Delphi 程序设计人员。
“软件开发者丛书——Delphi篇”序Delphi是Inprise公司的一种优秀的可视化软件开发工具,它短小精悍,但功能却可以与庞大的 VisualC++媲美;它易学易用,如同VB。
因而,被称作是“第四代编程语言”。
从1995年至今, Delphi已经发展到5.O版本。
Delphi 5.0采用面向对象的程序设置、组件化的编程方式、快速Pascal编译器、OLE自动化、ActiveX编程、数据库及Internet/Intranet编程支持,从而使得 Delphi 5.0开发功能更加强大,同时更加易于学习和使用。
该版本的主要特征之一就是支持Web,它能有效地帮助开发者个人或其开发团队快速建立Windows应用程序,并将其扩展到Internet中:快速简化Windows与浏览器客户、Web 服务器、中间件以及后台数据库系统的集成;支持HTML4、MXL及建立Internet数据分配与交换应用程序的工业标准。
此外, Delphi 5.0还加入了一些人性化的东西,比如颜色的设置、对象属性的控制、更多的集成组件、多语言支持工具(包括中文)等。
的确,Delphi 5.0更加不同凡响。
既然Delphi有如此强大的功能,选择它作为软件开发工具应该是理所当然。
而无论你是初学者还是有经验的用户,“软件开发者丛书—Delphi篇”都是你进入与邀游Delphi世界的最佳选择。
Delphi5 VCL结构
⏹概述⏹TObject⏹TPersistent⏹TComponent⏹TControl⏹TWinControl⏹TScrollingWinControl⏹TGraphicControl⏹TCustomControl一、概述Delphi5是一个真正面向对象的编程工具,它提供了一个符合工业标准的元件库(VCL)。
VCL(Visual Component Library的缩写)是Delphi的核心。
VCL是完全面向对象的,VCL中的所有对象都存在着继承与被继承的关系。
它们的继承关系如下:最顶层是TObject,它是一切对象的祖先类。
TPersistent是TObject的下一级继承者,它是一个抽象类,提供了对象之间相互赋值和读写流的能力。
TComponent是TPersistent的继承者,它是VCL中所有元件的祖先类,TComponent定义了所有元件最基本的行为。
尽管所有元件都是从TComponent继承下来,但直接继承的只有几个非可视的元件如TTimer等,其他元件则是从TComponent的下级TControl继承下来的。
从TControl继承下来的元件是可视的,可视元件也称为控件。
TWinControl和TGraphicControl这两个类都是从TControl继承下来的,从TWinControl继承下来的主要是按钮、对话框、列表框等有窗口句柄的控件,这些控件占用Windows的资源,并且允许用户输入。
而从TGraphicControl继承下来的控件例如TLabel、TSpeedButton等则没有窗口句柄,不占用Windows的资源,也不能接受键盘的输入;使用这一类控件的好处在于节约系统资源。
VCL的面向对象还体现在它的可扩展性,可以选择其中一个元件作为祖先类,派生出一个新的元件,并把新创建的元件加入到VCL中。
二、TObjectTObject是VCL中所有对象的基类,它定义了操纵对象的基本方法。
Delphi 讲义教程 第五章 程序调试与异常处理.
2. 响应异常和try ... except ... end;语句该语句结构提供了一个可以根据需要进行自定的异常处理的机制。
其一般格式如下: try // 以下为保护代码块 if <异常条件> raise <异常对象> except // 以下为异常处理块 on <异常类1> do <处理过程1或语句1> // 捕获异常为异常类1的处理 on <异常类2> do <处理过程2或语句2> // 捕获异常为异常类2的处理on .….. else <其他处理过程或语句> // 该子句可以缺省end;
三、自定义异常类及其应用通过继承类exception,可以自定义新的异常类。
定义一个新异常的形式如下: type 异常类名 = class(Exception; 或者如下: type 异常类名 = class(Exception 类成员 // 数据域或方法 ... end;。
Delphi5常用函数说明
⏹字符处理⏹数值与字符串转换⏹数值处理⏹内存分配和释放⏹文件管理一、字符处理⏹AdjustLineBreaks function格式字符串中的换行符为回车/换行符(CR/LF)。
声明:f unction AdjustLineBreaks(const S: string): string;参数:s -- 需要格式化的字符串;返回:s格式化后的字符串⏹AnsiCompareStr function根据当前Windows地方版本比较两个字段串大小(大小写区分)。
声明:f unction AnsiCompareStr(const S1, S2: string): Integer;参数:S1,S2 -- 需要比较大小的两个字符串;返回:> 0 -- 当S1 > S2时;< 0 -- 当S1 < S2时;= 0 -- 当S1 = S2时。
⏹AnsiCompareText function根据当前Windows地方版本比较两个字段串大小(大小写不区分)。
声明:f unction AnsiCompareText(const S1, S2: string): Integer;参数:S1,S2 -- 需要比较大小的两个字符串;返回:> 0 -- 当S1 > S2时;< 0 -- 当S1 < S2时;= 0 -- 当S1 = S2时。
⏹AnsiExtractQuotedStr function转换带引号的字符串为不带引号的字符串,引号可自定义为任何字符,同时去掉引号外的字符。
声明:f unction AnsiExtractQuotedStr(var Src: PChar; Quote: Char): string;参数:S rc -- 源字符串;Quote -- 引号字符;返回:S rc去掉引号后的字符串,同时去掉引号外的字符。
⏹AnsiLowerCase function返回一个字符串对应的小写字符串。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10/29/04
being investigated
Gates were not trimmed
WHY?
Therefore
Trimming not required per previous discussions withDelphiso parts are acceptable
WHY?
Therefore
Trimming we
Changes were made to the process per the customer with no objective evidence.
Depending on the length of the gate, parts could have been used byDelphi
Plastic Molded Part
Flint,MI
C
Problem Resolution Complete
Communicate toDelphiDate:
11/19/04
Process Change Break Point Date:
11/8/04
Implement System Change Date:
Date of Spill
WHY?
Therefore
N/A
Delhireceives product that doesn’t meet their expectations
Product / Process
DelphiLocation
Content Latest Rev Date
WHY?
Therefore
No objective evidence that trimming is not required byDelphi. Everything was verbal.
B
Ref. No. (Spill, PR/R…)
WHY?
Therefore
PR&R# 20041105-195459958
Verbal instructions were passed on to new operators.
11/8/04
Lessons Learned:
As of 11/8/04 we have implemented the practice of reviewing defects with the dedicated team of operators to help them understand how our customer uses parts. This will also get them more involved in the problem solving process. All communication in regards to customer requests to process changes must be documented.
11/2/04
11/3/04
11/8/04
WHY?
Therefore
WHY?
Therefore
When parts were trimmed, the excess plastic was falling into containers causing other issues.
Problem was reported to Key
Shift Supervisors & Charlie Szasz
11/8/04
When parts changed and caused problems atDelphithere was no objective evidence that Key was told to change the process.
Reviewed process and verified that no gate vestige, burrs, etc. is included in Work Instruction and Control Plan.
Shawn Lehman
Reviewed with operators and auditors that Work Instruction must be followed. Notify supervisor if you are told to do something that isn’t documented so it can be verified and changed if applicable.
WHY?
Therefore
WHY?
Therefore
The QE will ensure that all requests to change a process per the customer are documented. In addition, dedicated operators have been assigned to this operation to ensure process is consistent. Backup operators will be trained and work with the regular operators prior to working on this process. In the past we relied upon on the job training during production. The process will continue to be monitored to verify effectiveness.
Shift Supervisors & Charlie Szasz
Improved method for cleaning parts and totes after trimming to meetDelphi’s expectations.
Tom Hamilton & Charlie Szasz
Corrective Action
with Responsibility
Date
Delphihas received GMT360 retainer’s (09354390) with burrs on retainers on bottom of parts.
the specific
nonconformance
Issue Quality Alert (YQA-04045) requiring parts to be trimmed. A “Checked For Flash) label on the box indicates product was certified for this condition.
WHY?
Therefore
Parts were shipped toDelphi.
WHY?
Therefore
Previous discussions withDelphiinstructed Key not to trim parts
Gates / burrs caused problems during assembly