用心服务 创造品牌

首页 | 公务员 | 报关员 | 计算机 | 证券师 | 研究生 | 成考 | 自考 | 高考 | MBA | 英语 | 会计师 | 导游 | 医师 | 精算师 | 经纪师

您现在的位置: 21世纪考试网 >> 认证类考试 >> 计算机等级考试 >> 考试动态 >> 正文 21世纪考试网助你一臂之力!

   考试动态

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

来源:www.21ks.net  作者:佚名 更新时间:2008-6-26 18:49:06


  初学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语句中。

 
  • 上一篇认证类:

  • 下一篇认证类:
  • VIP俱乐部 | 我们优势 | 联系我们 | 学习问题 | 会员好评

    公务员考试辅导科目 精讲班 报 名
    主 讲 课 时 讲座
      最新公务员公务员考试辅导热点公务员 姚裕群 30课时 免费试听
      最新公务员注册会计师考试热点公务员 郑庆华 60课时 免费试听
      最新公务员报关员考试辅导热点公务员 覃珍珍 50课时 免费试听
      最新公务员职称英 语辅导热点公务员 王 霞 50-60 免费试听

    认证类录入:小芳老师    责任编辑:小芳老师 

    《Delphi初学者应小心的六大陷阱》来源于21世纪考试网,欢迎阅读Delphi初学者应小心的六大陷阱精华版。
       报考公务员所需要的全套资料     收藏全套公务员考试资料 更多>>
      最新公务员计算机等级考试 ·考试动态·报考指南·考试大纲·历年真题·模拟试题·复习资料·心得技巧最新公务员
      最新公务员计算机应用考试 ·考试动态·报考指南·历年真题·模拟试题·复习资料·心得技巧最新公务员
      最新公务员微软认证考试 ·考试动态·心得技巧·学习教程·试题中心·考试介绍最新公务员
      最新公务员Cisco认证考试 ·考试动态·考试指南·模拟试题·考试介绍最新公务员
      最新公务员软件工程师考试 ·软件设计师·数据库工程师·电子商务师·国际商务师·系统分析师·软件架构师·信息处理技术员·信息系统监理师·计算机英语最新公务员
       热 门 资 料 更多>>
     Delphi初学者应小心的六大陷阱
     
       推 荐 资 料 更多>>

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

       考 试 辅 导 更多>>

       会 员 评 价(关于Delphi初学者应小心的六大陷阱的评价)
        网站介绍∶小陈老师的21世纪考试网,办的非常成功,极具口碑。全站拥有超过40G教学视频,八百套真题,三千篇模拟测试题,四万套学习资料和全面系统的教学文章。与一般公务员考试相比,我们无须注册、 永久免费提供学习帮助,非常值得备战公务员考试的朋友们学习和参考。
      收藏本站 | 会员好评 | VIP俱乐部 | 联系我们
       相 关 资 料 更多>>
    考试动态Delphi初学者应小心的六大陷阱
    也谈VFP下客户机访问任意映射服务器
    在VFP下实现点对点通信的基本方法
    怎样在vfp中增加与去除网络联接
    分析数据库的依赖关系
    如何用VFP的dbf进行分布式查询
    查找没有索引的表
    vfp数据库的asp连接
    2008年全国计算机等级考试启用新版教材
    08年起全国计算机等级考试科目及内容调整
    Delphi异常处理与程序调试
    基于Delphi的SocketI/O模型全接触
    Delphi7的XML利器
    开发嵌入式IE浏览器监控程序
    基于Delphi的接口编程入门
    Delphi下利用DDE实现同Word的交互
    用Delphi设计多边形窗体
    不当的SQL语句导致系统不安全
    SQL-Server问题汇编
    代替Like的另一种写法
    SQL-Server非正常删除日志
    2008年Delphi初学者应小心的六大陷阱
       资料搜索一点通
       课 程 学 习 更多>>

       网 站 辅 导 更多>>
    公务员考试: 新闻·政策·申论范文·精彩面式·行政能力·基础知识·招警考试
    认证类考试: 计算机等级·计算机软件·微软认证·Cisco认证
    学历类考试: 研究生考试·成人高考·自学考试·普通高考·MBA(MPA)考试·英语资料
    资格类考试: 注册会计师·导游证·统一司法·执业医师·精算师·保险经纪人·证券分析师·报关员考试
       热 门 专 题  

       会 员 帮 助  

    Delphi初学者应小心的六大陷阱
    小雪客服/小艳客服(30分钟 内回答问题)
    QQ咨询业务咨询:569921419 代写文章业务咨询:点击留言 (上午8:30-晚上22:00)

    【查看留言】 【发表留言】


    备案:蜀ICP备05030541号 电话:0825-6699035 (0)13982585788 欢迎批评指正
    VIP俱乐部 | 我们优势 | 联系我们 | 支付平台 | 会员好评 | 友情链接 | 网站地图 | 版权申明 | 会员注册 | 常见问题
    CopyRight © 2006~2010 www.21ks.net All Rights Reserved
    荣誉出品:公务员之家 世纪秘书网 世纪考试网