当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: Delphi中两个BUG的分析与修复 在使用Delphi 7进行三层数据库开发时,遇到了两个小问题,通过反复试验,终于找出了Delphi 7中的两个小BUG并进行了修复(好像Delphi 6中也有相同的BUG),撰写此文与大家一起分享成功的喜悦。
 

 

    摘要: delphi中dbgrid中行的定位及着色实现 1 问题的提出 在对一个数据库系统进行操作的时候,发现不能对dbgrid控件中的数据行定位及在定位到某行后无法对当前行进行明显的标志(例如改变颜色),在往上查找了很多资料,发现基本没有对这个内容的介绍,包括一些动态设顶行的颜色等文章讲的都是在数据初始化时做的操作,而没有在数据源刷新后的重新定位功能,所以下决心解决这个问题,通过一上午对del......
 ·delphi的组件读写机制    »显示摘要«
    摘要: delphi的组件读写机制(一) 一、流式对象(stream)和读写对象(filer)的介绍 在面向对象java/j2me/code/ target=_blank>程序设计中,对象式数据管理占有很重要的地位。在delphi中,对对象式数据管理的支持方式是其一大特色。 delphi是一个面向对象的可视化设计与面向对象的语言相结合的集成开发环境。delphi的核心是组件。组件是对象的一种。delp......


Delphi中两个BUG的分析与修复

delphi中两个bug的分析与修复

  bug1.传参时中文被截断的问题: 【程序编程相关:DBGrid使用全书(三)

  在使用delphi 7进行三层数据库开发时,遇到了两个小问题,通过反复试验,终于找出了delphi 7中的两个小bug并进行了修复(好像delphi 6中也有相同的bug),撰写此文与大家一起分享成功的喜悦.我也是初学delphi,文中一定存在不少说的不对的地方,还请各位朋友多多指正. 【推荐阅读:多层数据库开发三:创建多层应用程序

  后台用sql server 2000,里面有一个xshetong表用于试验,您可以根据您的实际情况进行调整. 【扩展信息:DBGrid使用全书(四)

  bug再现的方法:

  先创建一个数据服务器:新建项目,创建一个远程数据模块,上面放置adoconnection.adodataset.datasetprovider各一,并做好相应设置,其中adodataset的comamndtext留空,并把它的option中的poallowcommandtext设置为true.编译运行.

  再创建客户端程序:新建项目,在窗体上放置dcomconnection,连上前面上创建的数据服务器,再放置一个clientdataset,把它的连接设成这里的dcomconnection,并设置它的providername为上面的服务器上的datasetprovider的名字.最后放置datasource与dbgrid各一并作相应设置用于查看结果,再放置一button用于测试.

  在button的onclick中写下类似于下面的代码(这里我用了xshetong的表与它的两个字段hth(char 15).gcmc(varchar 100),您可以根据你的实际测试情况进行调整):

  with clientdataset1 do

  begin

   close;

   commandtext := insert into xshetong(hth, gcmc) values(:hth,:gcmc);

   params[0].asstring := 12345;

   params[1].asstring := 会截断的中文字;

   execute;

   close;

   commandtext := select * from xshetong;

   open;

  end;

  运行程序,点击按钮,看到记录被插入了,可惜结果并不正确,“会截断的中文字”变成了“会截断”,但没有中文的“12345”倒是正确的插入了.

  bug分析与修复:

  为了对照起见,我试着直接用一个adoconnection与adocommand.adotable进行c/s构架测试,结果是正确的,中文字不会被切断.这说明了此bug只在三层构架上出现.

   用sql server事件探查器探查提交到sql server上运行的语句,发现两层构架与三层构架的情况有以下不同:

  两层构架:


...   下一页
 ·delphi一句话帮助    »显示摘要«
    摘要: 1. 如果想你的程序能够正确处理异常情况的话,请引用sysutils.pas单元,否则即使程序使用了try。。。except。。。也不能正确捕获异常。 2. 定义常量字符串的一种方式 resourcestring aa=aaaa; raise exception.createres(@aa); 3. 字符串常量数组的初始化 const constarray:array [0..2]......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE