铁匠

做人要低调
随笔 - 134, 评论 - 255 , 引用 - 184

导航

公告

文章分类

存档

随笔分类

相册

BLOG

网站

论坛

Delphi一些小结

好久没有像模像样地写DELPHI的程序了,最近写了一些,发现了一些以前没有碰到过的问题,以及小技巧:

  1. 封装数据库访问层时,可以用一个先定义一个数据访问接口(如IDataProvider),然后实现封在DLL里面,这样轻松实现在不同的数据库之间切换程序的数据源(实现一个和ASP.NET很类似的Provider模式).
  2. 在使用存储过程的时候,对一字串类型的值,一定要指明参数所需要的长度,否则会丢数据,赋值的时候,他会把中文按一个字算,但是在执行的时候,中文会当成两个字来算(这个和.NET比起来差别真大).
  3. 为了保持控件和对象的关系,可以把对象的指针挂在控件的Data属性里面,但是注意,有些控件的在释放的时候,会顺路帮你把对象释放了,所以在作内存释放的时候,一定要注意顺序,一定要把对象先放了,再删除控件(或是对象释放前先判断一下还存在不).
  4. 对象不是生存期自管理的,所以一定要注意,不然就会有内存泄露,我的作法是创建的时候,顺路就挂到那些ObjectList上,当然得注意,一个对象只能让一个ObjectList管理,不然程序退出的时候,又是一堆错.
  5. 因为数据有多个层次,多种目录,所以加载的时候,我开始选择打开一个目录加载一层,后面发现这种方式太复杂了,控制代码写得吐血.后面想到了,把原来的大对象拆成为:小对象+大对象的方式,小对象一次性加载完成(我这里的数据估计就几万条,算一下估计是能占个三五M的内存吧),大对象用懒加载的方式,这样即让控制简单,同时也不会造成加载的时候,速度偏慢和占用内存过多的问题.
  6. 如果在显示图片的时候,希望在图像区域出现滚动条,那么可以先把图片控件放在一个Frame里,然后再把这个Frame放到需要显示的地方,固定好Frame的大小,就可以了.原理是:其实显示的滚动条是Frame的.
  7. 计划完成DataValidator,这样只要注册一下控件的事情校验要求,就可以轻松实现界面控件的校验需求.

发表于 2007年9月10日 16:27

评论

No comments posted yet.

Post Comment

主题  
姓名  
主页
校验码  
内容   
京ICP备 05050892号