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

Posted

篇首语:人的天才只是火花,要想使它成熊熊火焰,哪就只有学习!学习。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi初学者应小心的六大陷阱相关的知识,希望对你有一定的参考价值。

Delphi初学者应小心的六大陷阱  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    初学DelphiI的人 由于各种原因 对DelphiI中的许多概念不能很好的理解 并由此带来了许多的问题 或者是开发出的程序稳性不好 一会能运行 一会又不能运行 或者是遇到一个问题久思不得其解 还误以为是DelphiI自身的BUG 等等这些 浪费了我们大量的时间 精力 也影响了我们的开发效率   那么如何才能避免这些错误了 尽量少走弯路了?笔者从事DelphiI开发多年 下面就把我的经验总结介绍给大家 希望帮助到初学DelphiI的朋友   问题一 对类的概念理解不到位 程序开发中不能灵活运用 请看下面的程序 unit Unit ; interfaceusesWindows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs StdCtrls shellApi;typeTForm = class(TForm)Button : TButton;private Private declarations public Public declarations end;varForm : TForm ;implementationuses CommonUni;  在DelphiI中新建一个程序 然后添加一个按钮 就得到了下面这段程序 这应该是大家相当熟悉的一段程序 可也就是这段程序 让许多的人在做开发很长时间后 还不能很好理解 该程序可分为三个个部分 第一部分 单元头(从起始位置到TYPE之前) 第二部分(从TYPE到END的部分) 定义了一个从Tform继承过来的窗体类 它包含一个Tbuttton类型的成员 最后一部分(Var到结束的部分) 定义了一个Tform 类型的变量 问题就出在这里了 许多人误以为这最后一段也是窗体类的一部分 在该窗体类中经常写出这样的代码 Form caption = 窗体标题 导致程序运行时得不到所要的结果 其实最后一部分根本就属于窗体类的定义 它们不过是在同一个UNIT中而已 所以代码应该这样写 self caption = 窗体标题   问题二 将释放对象的代码写在窗体的CLOSE事件中 导致Access Violation…的错误   一个窗体的关闭(CLOSE)与窗体的析构(Destory) 在系统处理上是有区别的 当一个窗体关闭时 窗体实际上只是隐藏起来了 它占用的资源并未从内存中释放了 我们还是可访问到窗体中的数据 而当窗体响应DESTORY事件时 窗体不仅仅是隐藏起来了 而且占用的系统资源也释放出来了 因此 如果一个窗体关闭后 我们还想访里面的对象 就应该将这些对象的FREE代码写的窗体的(DESTORY)事件中   问题三 不加区别地使用String与shortString数据类型   String类型与shortString类型是有区别的 在默认的情况下(取决于$H开关) 如果你将一个变量定义为string类型 那么会被处理成一个ANSIString类型 这种类型是动态分配内存的 以NULL为结尾 最大长度为 G 而shortString的最大长度是不能超过 个字符的 由于ANSIstring是生存期自管理类型的数据 这意昧著这种类型的数据需要更多的系统开销 所以在程序开发中 shortString能满足要求的话 就尽量使用它 以提高程序的运行速度   问题四 进行数据类型转换时处理不当 犯错误最多的就是字符型到数字/浮点型的转换   当将一个字符型数据转换为整型时 我们经常这样写 I := StrToInt(aEdit Text); 表面上看这一句 没有任何问题 函数的使用 格式的写法 都是正确的 可有一种情况我们却没有考虑到 如果用户在aEdit文本框中输入的不是数字文本的话 会怎么样呢?调用还会成功吗?显然是不会的 系统肯定会弹出一个英文的错误 让我们的用户不知所措的 正确的写法是 I := StrToIntDef(aEdit Text ); 这样当转换不成功时 第二个参数就会赋给I 类似的函数还有strToInt Def StrToFloatDef等等   问题五 单元引用的问题 使用那个函数 就一定要引用函数所在的单元   比如在程序开发中我们要用到一个API函数ExtractIconEx(从程序或是文件中获得一个图标) 那么就一要在它的USES中把单元shellApi加入进来 否则是不能通过编译了 类似的情况还有很多 我们常常使用帮助文档 从中查找需要的函数 可当程序编译时 却通不过 为什么呢?就是因为没有在USES中引用函数所在的单元 这个问题初学者犯得最多 应该加倍注意   问题六 避免循环引用 尽可能通过第三个单元实现 如果确实不可避免 应在不同位置进行引用 所谓循环引用就是A单元引用了B单元 而反过来 B单元又引用了A单元 产生循环 我们还看上面的那一段程序 在interface的下面有一个USES语句 而在implementation的下面 又有一个USES语句 循环如果确实不可避免 那么就应该在将A单元中的引用写在第一个USES语句中 而将B单元中的引用写在第二个USES语句中 cha138/Article/program/Delphi/201311/24752

相关参考

知识大全 破解求职过程中常见的六大陷阱

职场新人急于找工作,往往会被心急冲昏头脑,或者因为缺乏社会经验忽略了一些求职盲点。新人们该如何擦亮双眼识破这些骗局,有如何的避免求职过程中的种种陷阱?告诉大家几种求职陷阱及他的破解方法:陷阱1不通过正

治疗白癜风小心这些陷阱

治疗白癜风小心这些陷阱植皮是治标不治本的办法现在很多医院都会把植皮等外治疗法当成治疗白癜风的主要手段来宣传,很多患者不明白其中的原因,盲目追求快捷的方式,往往就上当了。中医认为:白癜风虽长在外表,但根

知识大全 求职面试小心语言陷阱

面试极像一次相亲。应征者希望找到一个能够了解自己优点的老板,用人单位则希望能找到优秀的合作伙伴。当陌生的双方相见后,都想在短短一席话中努力表现出自己的优点、说出聪明话或立即呈现出很棒的反应,以便给对方

知识大全 毕业生求职谨防四陷阱

目前,正是一些毕业生和求职者找工作的高峰期,不少求职者找工作心切的特点被一些非法中介公司及用人单位利用,因此,在应征时要小心谨慎,不要轻易相信招聘单位的收费理由,拒绝交付任何费用或者把个人证件作为抵押

牛皮癣致病的六大因素

长期以来,中西医科学对牛皮癣的研究从未松懈过,但由于牛皮癣复杂的病理,多年来,医学上重点研究它的病因及发病机理,近年来随着科学研究的进步,大多数学者和研究人员都认为,牛皮癣的发病原因与遗传、感染、免疫

牛皮癣致病的六大因素

长期以来,中西医科学对牛皮癣的研究从未松懈过,但由于牛皮癣复杂的病理,多年来,医学上重点研究它的病因及发病机理,近年来随着科学研究的进步,大多数学者和研究人员都认为,牛皮癣的发病原因与遗传、感染、免疫

知识大全 网上陷阱要看清,淘宝兼职好评师要交钱才能做的靠谱吗

网上陷阱要看清,淘宝兼职好评师要交钱才能做的靠谱吗交钱的肯定是骗子你还会自己小心点的好毕竟,交钱的话,那就是要被骗的了刷信誉陷阱”网上兼职怎么做淘宝刷好评兼职靠谱吗这样的兼职就是不大靠谱的你要做就是要

知识大全 毕业生求职应注意六大事项

每年总会有一些毕业生到毕业时仍未找到满意的工作,以下6点对毕业后求职成功具有重要作用:一、勿忘母校,经常联系。毕业时一定要留下便捷的联系方式,毕业后更要经常主动地与母校联系,一则可以向老师请教求职中碰

不能不知道的装修陷阱

装修陷阱一:抓住业主关心单项价格的心理,故意模糊报价和工艺说明,如材料、规格、等级等。小公司多采取模糊报价、低价切入的方式,而大公司的报价则相对透明。消费者要留意装修公司提供的报价单,应清楚表达每个部

海区网箱养鱼重视六大问题

一、品种。网箱养鱼的品种选择必须因地制宜,科学合理。多年的生产实践证明,养鱼品种的选择应遵循如下原则:①生长速度较快。生长速度越快,养殖周期就越短,网箱的周转期就越短,效益就越高。②经济价值要高。鱼的