起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 153|回复: 9

【结帖】问个代码问题**

[复制链接]
发表于 2009-7-9 08:57:13 | 显示全部楼层 |阅读模式
比如说
有几行代码写在数据集的beforePost事件里。
procedure xxxxInfo.DataSetXXBeforePost(DataSet: TDataSet);
在这个事件里我访问某个字段值或者给其赋值
用DataSet.FieldByName('aa').AsString 和用DataSetXX.FieldByName('aa').AsString  有什么区别?
回复

使用道具 举报

发表于 2009-7-9 09:14:54 | 显示全部楼层
如果2个都能完成写入数据的动作,就没区别。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-9 09:19:15 | 显示全部楼层
是这样的
在我开发的机器上运行没问题
但是有的机器报错
Access violation at address 4032CECC in module 'dbrtl60.bpl'. Read of address 00000030
在出错的机器上跟踪到这步出错了
全部改成DataSetXX后就好了
回复 支持 反对

使用道具 举报

发表于 2009-7-9 09:23:49 | 显示全部楼层
楼主,你在出错的机器上调试运行一下:
在出错代码上设置断点,看看DataSet是否就是DataSetXX,字段aa是否存在
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-9 09:30:37 | 显示全部楼层
在出错的机器上提示dataset空对象
ctrl + F7后 也是提示位置偏移

因为已经不影响使用,只是想弄清楚这个问题,是studio的问题还是我自己的理解错误
回复 支持 反对

使用道具 举报

发表于 2009-7-9 09:34:36 | 显示全部楼层
在调试运行时,查看一下调用栈,确认是否调用的方法错误导致
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-9 09:39:33 | 显示全部楼层
呵呵,算了,这个问题也不去深究了
因为在我本机上是没问题的,也不知道为什么不同的机器会有不同的效果
回复 支持 反对

使用道具 举报

发表于 2009-7-9 09:46:10 | 显示全部楼层
procedure TDataSet.DoBeforePost;
begin
  if Assigned(FBeforePost) then FBeforePost(Self);
end;
这个是vlc源码,理论上self就是这个被通知事件组件本身。也就是dataset参数。
回复 支持 反对

使用道具 举报

发表于 2009-7-9 09:46:58 | 显示全部楼层
我怀疑是调用的问题,不一定是机器问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-9 09:50:52 | 显示全部楼层
呵呵,谢谢回复
结贴吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-19 05:07 , Processed in 0.040278 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表