Delphi初学者应小心的六大陷阱

Delphi初学者应小心的六大陷阱,第1张

Delphi初学者应小心的六大陷阱,第2张

由于各种原因,Delphi初学者不能很好的理解Delphi中的很多概念,导致很多问题,或者开发的程序稳定性不好,一会儿能运行一会儿不能运行;或者遇到一个很久都想不通的问题,误以为是DelphiI本身的BUG等等,浪费了大量的时间和精力,也影响了我们的开发效率。

那么如何才能避免这些错误,尽可能少走弯路呢?本人从事Delphi开发多年。下面总结一下我的经验,希望对初学Delphi的朋友有所帮助。

问题1:没有很好的理解类的概念,在程序开发中不能灵活运用。请看下面的节目:

unit Unit1
接口

使用
窗口、消息、系统工具、变体、类、图形、控件、表单、
对话框、StdCtrls、shellApi。

type
t form 1 = class(t form)
button 1:t button;
私有
{私有声明}
公共
{公共声明}
end;

var
form 1:t form 1;
实现

使用CommonUni

在DelphiI中创建新程序,然后添加一个按钮,得到下面的程序。这应该是大家都相当熟悉的一个程序,但也是这个程序,很多人做了很长时间的开发还是不能很好的理解。程序可分为三部分:第一部分,单元头(从起始位置到类型前);第二部分(从TYPE到END)定义了一个继承自Tform的form类,其中包含一个Tbuttton类型的成员。最后一部分(Var to the end)定义了Tform1类型的变量。这就是问题所在。很多人误以为这最后一段也是form类的一部分。在这个form类中,经常会编写Form1.caption =' form title '这样的代码,导致程序运行时得不到想要的结果。其实最后一部分根本属于窗体类的定义。他们只是在同一个单元里,所以代码应该这样写:self.caption = ' form title

问题2:在表单的关闭事件中编写释放对象的代码导致访问冲突的错误…

关闭窗体和销毁窗体在系统处理上是有区别的。当窗体关闭时,窗体实际上只是被隐藏了,它所占用的资源并没有从Destory中释放出来,所以我们仍然可以访问窗体中的数据。当窗体响应DESTORY事件时,窗体不仅被隐藏,而且被占用的系统资源也被释放。因此,如果我们想在窗体关闭后访问其中的对象,我们应该在窗体的(DESTORY)事件中编写这些对象的自由代码。

问题3:不加区别地使用String和shortString数据类型。

字符串类型和短字符串类型是有区别的。默认情况下(取决于$H开关),如果您将变量定义为字符串类型,它将被视为字符串类型。这种类型动态分配内存,以NULL结尾,长度为4G,而shortString的长度不能超过255个字符。ANSIstring是一种自我管理类型的数据,也就是说这种类型的数据需要更多的系统开销,所以在程序开发中,如果shortString能够满足要求,尽量使用它来提高程序的运行速度。

问题4:数据类型转换处理不当,最多的错误是从字符型到数字/浮点型的转换。

在把一个字符数据转换成整数的时候,我们经常会写I:= strInt(a edit . text);这句话表面上看没有问题。函数的使用和格式的编写都是正确的。但是有一种情况我们没有考虑到。如果用户不在编辑文本框中输入数字文本会发生什么?通话会成功吗?显然不会,系统肯定会弹出一个英文错误,让我们用户无所适从。正确的拼写是:I: = strtotdef (a edit.text,0);当这个转换不成功时,第二个参数会赋给I,类似的函数有strToInt64Def,StrToFloatDef等等。

问题五:单位参照的问题。使用该功能时,必须参考该功能所在的单元。

例如,如果我们想在程序开发中使用一个API函数ExtractIconEx(从程序或文件中获取一个图标),我们必须将单元shellApi添加到它的用途中,否则它将不会被编译。类似的情况还有很多。我们经常使用帮助文档来查找所需的函数,但是当程序被编译时,它就失败了。为什么?因为函数所在的单元在使用中没有被引用。初学者在这个问题上犯的错误最多,所以我们应该多加注意。

问题6:避免循环引用,尽量通过第三单元实现。如果无法避免,应该异地引用。所谓循环引用,就是单位A引用单位B,反过来单位B又引用单位A,造成循环。我们也来看看上面的程序。接口下面有一个USES语句,实现下面还有一个USES语句。如果循环不可避免,那么单元A中的引用应该写在第一个USES语句中,而单元B中的引用应该写在第二个USES语句中。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Delphi初学者应小心的六大陷阱

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情