【发布时间】:2015-09-22 17:36:42
【问题描述】:
我在非常古老的代码(15 年)中有一个位置刚刚开始起作用:
cTemp := tblMemList.FieldByName('TTType').AsString;
在 Delphi 的 DB.pas 中,FieldByName 函数传递的“FieldName”常量显示的值是“点击保存或取消”,而不是“TTType”。
一开始我以为可能是因为在一个有点大的 pas 单元(大约 17k 行)中造成的,所以我把它分成了两个 pas 单元,但没有任何效果。
我被难住了。有什么想法吗?
【问题讨论】:
-
您的代码可能存在缺陷。请出示minimal reproducible example。
-
显而易见的问题:自上次正常工作以来,您对源代码进行了哪些更改?无论如何,症状听起来像是内存覆盖。你试过使用 FastMM4 吗?这可以捕捉到这样的事情。
-
(不确定这是否是对建议的回应)我按照建议安装了 FastMM4,它确实发现了一个内存泄漏,但修复它对问题没有影响。当那条线运行时,我仍然得到一个 AV。至于展示一个例子,我不知道还能发布什么。当我 F7 这一行时,它立即转到 FieldByName 函数,并且作为参数传递的值不是我的代码中显示的值。这里的所有都是它的。 F7之前是'TTType';在我按 F7 后,它显示为“lick onSave or Cancel”。