☆☆☆ Delphi 6 大 BUG ☆☆☆ 可导致 WebSnap 应用程序崩溃! (100分)

  • 主题发起人 主题发起人 huawdg
  • 开始时间 开始时间
H

huawdg

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi 6 的 WebSnap 中 DataSetAdapter 组件的 Locate 方法有一个大 BUG!!!
请看:
var LocateParams:TLocateParams;
with DataSetAdapter do
begin
LocateParams:=LocateParamsList.Add;
LocateParams.AdapterName:=Name;
LocateParams.AddParam('KeyfieldName','abc''');
Locate;//抛出“Unterminated string constant”异常!!(未终结的字符串常量
end;

可能 WebSnap DataSetAdapter 组件的记录定位都基于此 Locate 方法,
如果使用不当,你要惨了!
例如:
在 Web Application Page Module 上,
放一个 DataSetAdapter 组件,为它指定一个 DataSet 组件,让关键字段是字符串类型,
在 DataSetAdapter 的 Actions 中选取所有的 Action。
再配置 AdaptePageProducer 如下:
AdapterFieldGroup ,添加所有 Field
AdapterCommandGroup ,添加所有 Command
运行应用程序来测试:
1.点击 NewRow 按钮新添一条记录
2.输入字段值,在关键字段处输入:abc'
3.点击 Apply 提交记录
4.然后你不管按 NextRow, DeleteRow .....哪个按钮都不正常了
5.惨了! 先到数据库中手工删除这条记录吧,以后再想别的办法。

BORLAND 的设计人员怎么了???

 
?????? 'abc'''
delphi中可以这样写吗?
 
哈哈,为什么不可以?你可以试试,怎样写包含引号的字符串常量!!!
现在是 Locate 出错,而不是 AddParam!!!
 
LocateParams.AddParam('KeyfieldName','abc''''');
 
to Xerxes:
你的方法确实可以解决 Locate 方法调用的问题,但是,你必须编制专门的程序来处理这种情况。
比如,现在不是常量,而在变量中,则必须用个转换函数来“迎合” Locate 的需要,
而对于整个 WebSnap 应用,仍不能奏效。
这个 Locate 是不是太不合理了!
 
庸人自扰。明明是你自己错了,还瞎叫唤。[:(!]
应该写成
LocateParams.AddParam('KeyfieldName','''abc''');
 
to zhukewen:
请看仔细些!
我的目标字符串是:“ abc' ”
 
能否这么写呢?

var
abc : widestring;
begin
abc := 'abc''';
...
LocateParams.AddParam('KeyfieldName',abc);
...
end;

没有环境无法具体测试,:(
 
to jobsxy:
没用的。BUG 在 Locate 方法中
 
没有答案,谁下一个进来,分就给谁
 
哈哈!websnap我懂都不懂!不小心点了进来,并且看到最后一行!哈哈,走狗屎运了!
 

Similar threads

D
回复
0
查看
704
DelphiTeacher的专栏
D
D
回复
0
查看
833
DelphiTeacher的专栏
D
D
回复
0
查看
915
DelphiTeacher的专栏
D
D
回复
0
查看
820
DelphiTeacher的专栏
D
后退
顶部