gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:02:56 27 4
gpt4 key购买 nike

我熟悉Jeff Atwood's article about how errors are always the programmer's fault ,但我相信我确实在 Delphi .pas 文件中发现了一个错误。

具体来说,我使用的是 Delphi 2007,错误出现在 DBCommon.pas 文件的第 955 行,该文件在我的计算机上位于此处:

C:\program files\codegear\rad studio\5.0\source\Win32\db\DBCommon.pas

代码是这样的:

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

如果“Token”的值为 0,则我们尝试访问 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 放入您的项目目录中。然后它将与项目的其余部分一起编译。

关于delphi - 我可以重新编译 Delphi IDE 使用的 .PAS 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1533686/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com