Delphi初学者应小心的六大陷阱 (转)
初学DelphiI的人,由于各种原因,对DelphiI中的许多概念不能很好的理解,并由此带来了许多的问题,或者是开发出的程序稳性不好,一会能运 行,一会又不能运行;或者是遇到一个问题久思不得其解,还误以为是DelphiI自身的BUG,等等这些,浪费了我们大量的时间、精力,也影响了我们的开 发效率。
那么如何才能避免这些错误了,尽量少走弯路了?笔者从事DelphiI开发多年,下面就把我的经验总结介绍给大家,希望帮助到初学DelphiI的朋友。
问题一:对类的概念理解不到位,程序开发中不能灵活运用。请看下面的程序:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, shellApi;
type
TForm1 = class(TForm)
Button1: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses CommonUni;
在DelphiI中新建一个程序,然后添加一个按钮,就得到了下面这段程序。这应该是大家相当熟悉的一段程序,可也就是这段程序,让许多的人在做开发 很长时间后,还不能很好理解。 该程序可分为三个个部分:第一部分,单元头(从起始位置到TYPE之前);第二部分(从TYPE到END的部分),定义了 一个从Tform继承过来的窗体类,它包含一个Tbuttton类型的成员。最后一部分(Var到结束的部分),定义了一个Tform1类型的变量。问题 就出在这里了,许多人误以为这最后一段也是窗体类的一部分,在该窗体类中经常写出这样的代码,Form1.caption = '窗体标题',导致程序运 行时得不到所要的结果。其实最后一部分根本就属于窗体类的定义,它们不过是在同一个UNIT中而已,所以代码应该这样写:self.caption = '窗体标题';
问题二:将释放对象的代码写在窗体的CLOSE事件中,导致Access Violation…的错误。
一个窗体的关闭(CLOSE)与窗体的析构(Destory),在系统处理上是有区别的,当一个窗体关闭时,窗体实际上只是隐藏起来了,它占用的资源 并未从内存中释放了,我们还是可访问到窗体中的数据;而当窗体响应DESTORY事件时,窗体不仅仅是隐藏起来了,而且占用的系统资源也释放出来了。因 此,如果一个窗体关闭后,我们还想访里面的对象,就应该将这些对象的FREE代码写的窗体的(DESTORY)事件中。
问题三:不加区别地使用String与shortString数据类型。
String类型与shortString类型是有区别的,在默认的情况下(取决于$H开关),如果你将一个变量定义为string类型,那么会被处 理成一个ANSIString类型。这种类型是动态分配内存的,以NULL为结尾,最大长度为4G,而shortString的最大长度是不能超过255 个字符的。由于ANSIstring是生存期自管理类型的数据,这意昧着这种类型的数据需要更多的系统开销,所以在程序开发中,shortString能 满足要求的话,就尽量使用它,以提高程序的运行速度。
问题四:进行数据类型转换时处理不当,犯错误最多的就是字符型到数字/浮点型的转换。
当将一个字符型数据转换为整型时,我们经常这样写 I := StrToInt(aEdit.Text); 表面上看这一句,没有任何问题,函数的使 用,格式的写法,都是正确的。可有一种情况我们却没有考虑到,如果用户在aEdit文本框中输入的不是数字文本的话,会怎么样呢?调用还会成功吗?显然是 不会的,系统肯定会弹出一个英文的错误,让我们的用户不知所措的。正确的写法是:I := StrToIntDef(aEdit.Text, 0); 这 样当转换不成功时,第二个参数就会赋给I。类似的函数还有strToInt64Def,StrToFloatDef等等。
问题五:单元引用的问题。使用那个函数,就一定要引用函数所在的单元。
比如在程序开发中我们要用到一个API函数ExtractIconEx(从程序或是文件中获得一个图标),那么就一要在它的USES中把单元 shellApi加入进来,否则是不能通过编译了。类似的情况还有很多,我们常常使用帮助文档,从中查找需要的函数,可当程序编译时,却通不过,为什么 呢?就是因为没有在USES中引用函数所在的单元。这个问题初学者犯得最多,应该加倍注意。
问题六:避免循环引用,尽可能通过第三个单元实现。如果确实不可避免,应在不同位置进行引用。所谓循环引用就是A单元引用了B单元,而反过来,B单元 又引用了A单元,产生循环。我们还看上面的那一段程序,在interface的下面有一个USES语句,而在implementation的下面,又有一 个USES语句。循环如果确实不可避免,那么就应该在将A单元中的引用写在第一个USES语句中,而将B单元中的引用写在第二个USES语句中。
分享到:
相关推荐
对于初学者来说,理解Delphi的基础用法至关重要,这里我们将通过介绍如何在Delphi7.0中实现全屏显示、随机数生成以及播放声音等功能来展开讨论。 **全屏显示** 在Delphi中实现运行时全屏显示有几种方法。一种是在...
在学习DELPHI编程的过程中,初学者可能会遇到一些常见的陷阱和难点。以下是对"DELPHI包初学者小心的几点"这一主题的详细说明,帮助新手避免这些常见问题。 1. **组件使用不当**:Delphi拥有丰富的组件库,如TButton...
Delphi 初学者项目案例 小小项目,助你入门Delphi
Delphi是一种基于Object ...总的来说,Delphi的学习涵盖了大量的编程理论和实践知识,初学者应从基础入手,逐步深入,结合实例进行实践,同时参考高质量的教程和文档,如"Delphi大全.chm",来提升自己的编程技能。
Delphi初学者百事通是一本专为那些刚刚接触或打算学习Delphi编程语言的人们设计的指南。Delphi是一款强大的集成开发环境(IDE),基于Object Pascal编程语言,以其高效、快速的应用程序开发能力而闻名。这篇教程的...
在Delphi编程环境中,开发五子棋程序可以提供一个很好的实践平台,帮助初学者掌握面向对象编程、图形用户界面设计以及算法设计等基础知识。 1. **面向对象编程**: Delphi是一款基于Object Pascal的集成开发环境,...
在本主题“Delphi初学者游戏编程代码”中,我们将探讨如何使用Delphi进行游戏开发的基础知识。 1. **面向对象编程**:Delphi的核心是其面向对象的编程模型,这意味着你可以创建可重用的类,这些类可以代表游戏中的...
初学者在学习Delphi时,经常会接触到Windows API的概念。Windows API(Application Programming Interface)是微软为开发者提供的一系列预定义函数,使得程序员能够与操作系统进行交互,执行各种任务,比如文件操作...
DELPHI,作为一款强大的面向对象的编程语言和集成开发环境,对于初学者来说,它提供了丰富的工具和功能,能够快速构建高性能的应用程序。本文将深入探讨DELPHI的编码规范和入门知识,帮助初学者更好地理解和掌握这个...
初学者在学习Delphi时,需要理解以下几个关键知识点: 1. **编译器与解释器的区别**:Delphi使用的是编译型语言,这意味着源代码在执行前会被编译器转换为机器码,这通常导致更快速的运行速度和更好的性能。与之...
本压缩包"为Delphi初学者准备的一些网络操作实例"提供了实践性的代码示例,帮助初学者快速掌握在Delphi中进行网络编程的基本技能。 网络操作在Delphi中主要依赖于 Indy (Internet Direct) 和 Synapse 这两个库。...
给朋友帮忙做的一个报表打印程序,现将完整源码奉献给大家,可直EXE接运行,比较适合初学者学习Delphi 开发桌面程序学习, 控件用到 fastreport,raize,Ehlib 主要介绍fastreport报表打印,数据库连接开发,程序注册...
这个“delphi初学者最佳实践程序”压缩包提供了几个实例,可以帮助初学者更好地理解和掌握Delphi编程,特别是在网络应用开发方面。以下是这些项目所涉及的主要知识点: 1. **FTP客户端软件**:FTP(File Transfer ...
初学者应掌握如何连接数据库,执行SQL查询,并显示查询结果。 10. **网络编程**:Delphi也可以进行网络编程,如HTTP请求、套接字通信等,这对于开发网络应用非常重要。 这个“delphi 新手练习打包”的压缩文件很...
每个实例都应包含完整的源代码、注释和执行步骤,以帮助初学者理解并模仿。通过实践这些实例,初学者不仅可以学习到Delphi的基础知识,还能逐渐提升解决问题的能力,最终能够独立开发出功能丰富的应用程序。
"Delphi实例大全 初学者必备"这个资源集合显然是为了帮助新手快速掌握Delphi编程技巧而设计的。 在学习Delphi的过程中,实例是极其重要的,因为它们能够将理论知识转化为实际操作,帮助理解各种编程概念。通过实例...
在本教程中,我们将探讨的是一个专门为Delphi初学者设计的写字板程序实例,该程序提供了基础的文字编辑功能,并且拥有一个用户友好的清晰界面。 首先,让我们了解Delphi7.0版本的重要性。Delphi7是在2002年发布的,...
收集一些最全面的Delphi初学实例源代码..rar
本教程将深入浅出地介绍Delphi语言的基础语法,旨在为初学者提供一个完整的入门指南。 首先,让我们从Delphi的基本结构开始。在Delphi中,程序由单元(Unit)组成,每个单元都包含声明和实现部分。声明部分定义了...