delphi对话框函数.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
delphi对话框函数

Delphi中两个BUG的分析与修复谢谢两位的热心支持,原因已经找到: 自己组合SQL,然后ADOQUERY.TEXT = :SQL,(注间数值两端不能加引号,字符两端用QuotedStr方法加上引号)就可以了,已经试过.  在使用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;  运行程序,点击按钮,看到记录被插入了,可惜结果并不正确,“会截断的中文字”变成了“会截断”,但没有中文的“12345”倒是正确的插入了。  BUG分析与修复:  为了对照起见,我试着直接用一个ADOConnection和ADOCommand、ADOTable进行C/S构架测试,结果是正确的,中文字不会被切断。这说明了此BUG只在三层构架上出现。   用SQL Server事件探查器探查提交到SQL Server上运行的语句,发现两层构架与三层构架的情况有以下不同:  两层构架:  exec sp_executesql NInsert into XsHeTong(HTH, GCMC) values(@P1,@P2), N@P1 varchar(15),@P2 varchar(100), 12345, 会截断的中文字  三层构架:  exec sp_executesql NInsert into XsHeTong(HTH, GCMC) values(@P1,@P2), N@P1 varchar(5),@P2 varchar(7), 12345, 会截断  显然,两层构架时,参数的长度是按实际库结构传的,三层构架时,参数长度是按实际参数的字符串长度传的,而实际字符串长度又似乎是算错了,没有把一个中文当两个字符长度处理。  没有办法只好进行跟踪调试,为了调试Delphi的VCL库,需要在工程选项的“Compiler Options”中选上“Use Debug DCUs”。  先跟踪客户端程序,ClientDataSet1.Execute后,先后经历了TCustomClientDataSet.Exectue、TCustomeClientDataSet.PackageParams、TCustomClientDataSet.DoExecute等一系列函数,一直到AppServer.AS_Execute(ProviderName, CommandText, Params, OwnerData); 把请求提交到服务器均没有什么异常情况,看来问题出在服务器端。  对服务器进行跟踪,反复试验后,我把重点落在了TCustomADODataSet.PSSetCommandText函数身上,经过反复细致的跟踪,目

文档评论(0)

gk892289 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档