加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

我可以重新编译Delphi IDE使用的.PAS文件吗?

发布时间:2020-12-15 09:44:39 所属栏目:大数据 来源:网络整理
导读:我熟悉 Jeff Atwood’s article about how errors are always the programmer’s fault,但我相信我确实在Delphi .pas文件中发现了一个错误. 具体来说,我使用的是Delphi 2007,错误发生在DBCommon.pas文件的第955行,该文件位于我的机器上: C:program filesc
我熟悉 Jeff Atwood’s article about how errors are always the programmer’s fault,但我相信我确实在Delphi .pas文件中发现了一个错误.

具体来说,我使用的是Delphi 2007,错误发生在DBCommon.pas文件的第955行,该文件位于我的机器上:

C:program filescodegearrad studio5.0sourceWin32dbDBCommon.pas

代码是这样的:

...
  FieldIndex := StrToInt(Token);
  if DataSet.FieldCount >= FieldIndex then
    LastField := DataSet.Fields[FieldIndex-1].FieldName else
...

如果“Token”的值为零,那么我们尝试访问DataSet.Fields的索引-1,从而导致列表索引超出边界错误.

这个错误不会引发给用户,因为它在它达到高位之前就被处理了,但是每次发生这种情况时调试器都会中断是非常恼人的.

我可以“忽略这个异常类型”,但索引越界错误很常见,我不想普遍忽略它们.

导致FieldIndex为零的情况是当您有一个SELECT语句,其ORDER BY包含一个函数时,如:

ORDER BY
  CASE WHEN FIELD1 = FIELD3 THEN 1 ELSE 2 END,CASE WHEN FIELD2 = FIELD4 THEN 1 ELSE 2 END

我可以修复DBCommon.pas中的错误,但Delphi不会重新编译,我的更改不会生效.如果我重命名.DCU文件,那么它只是抱怨无法找到“DBCommon.dcu”.

所以(最后)我的问题是:我可以用我的修复程序重新编译DBCommon.pas,如果是的话,怎么样?

解决方法

您可以将dbcommon.pas放在项目目录中.然后将与项目的其余部分一起编译.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读