Delphi中两个BUG的分析与修复

本文详细分析了在Delphi 7中遇到的两个问题:1)三层架构下中文参数传递被截断的BUG,原因是VarDataSize函数计算字符串长度时的错误,并给出了修复方案;2)ClientDataSet Lookup字段处理单引号导致的错误,通过修改源代码解决了未结束的字符串常量问题。这两个BUG只在三层构架下出现,修复后能确保数据正确插入和查找。
摘要由CSDN通过智能技术生成

Delphi中两个BUG的分析与修复

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

  BUG1.传参时中文被截断的问题:

  BUG再现的方法:

  后台用SQL Server 2000,里面有一个XsHeTong表用于试验,您可以根据您的实际情况进行调整。

  先创建一个数据服务器:新建项目,创建一个远程数据模块,上面放置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;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值