有人知道这个错误意味着什么吗?
它来自我的一个单位。添加空格或换档有时会解决它,有时候不会...
我正在使用Delphi 2007。
答案 0 :(得分:12)
这是一个Delphi internal error guide,可能会帮助你。内部错误通常可以通过删除DCU文件,重新启动IDE或不使用加速Delphi启动的工具(如DelphiSpeedUp)来解决。
但是在大多数情况下,这是Delphi编译器中的一些奇怪的错误,如果你知道要解决它并且这不会太费钱,那就这样做并且开心。我曾经控制台版本dcc32崩溃(IDE编译正常)当我用Inc增加变量并使用add而不是Inc解决了问题...
答案 1 :(得分:5)
最好的办法是向CodeGear报告。如果您能找到一种始终如一地导致错误的方法,那么它确实很有帮助,因此他们可以更轻松地跟踪它。
答案 2 :(得分:4)
获取内部错误的一种简单方法是使用剪切和粘贴来创建新例程。我将IF块中的所有代码移动到新程序,并在新proc的结尾处获得内部错误T2335(在Delphi 7中)。
错误是由“If(Something)then break;”行引起的。问题是,这段代码不再处于循环中,因此没有什么可以打破的。将“Break”更改为“Exit”可以解决问题。
请查看Break and Continue语句。
答案 3 :(得分:2)
我也遇到过这个问题,我已经测试了很多解决方案,但是没有对我有所帮助。 然后我发现了这个错误原因: 在发生错误的函数中,我有一个试图加入字符串变量的Inc()函数! 所以我修复了那个bug,一切都变得正常了:))
答案 4 :(得分:2)
今天我有另一个案例(D2010),因为好的'Turbo Pascal时代,一切都是完全合法的语法:
type
TValueRec = record
selector : (int,str,unk);
intVal : Integer;
strVal : WideString;
unkVal : IUnknown;
end;
在基于泛型的类的方法中使用此记录,在另一个单元的中间某处出现了“F2084内部错误:AV0661CFEF-R0000000C-0”。
以这种方式改变它对我有用:
type
TValueRecSelector = (int,str,unk);
TValueRec = record
selector : TValueRecSelector;
intVal : Integer;
strVal : WideString;
unkVal : IUnknown;
end;
然而,非常恼人的是,这些事情会在代码中完全不相关的地方产生这样的错误。
答案 5 :(得分:1)
所有内部错误都是不应该发生的事情,但确实发生了。检查QC,如果没有,请报告。如果你能提供一种方法来重现它,那么它就更有可能修复它。
通常对于内部错误,我会完全构建或重新启动Delphi。
答案 6 :(得分:1)
我在一个例子中遇到了这个错误:
procedure TDMData.SetValue(AValue: Word);
var
prevValue: Word;
method: TMethod;
begin
if FValue = AValue then
Exit;
prevValue := FValue;
FValue := AValue;
for method in FValueChangeEvent.Notifications do
TDMDataValueChangeNotification(method)(Self, AValue, prevValue);
end; // <--- Fatal: F2084 Internal Error: T2575
GetNotifications返回的GetNotifications Notifications属性和记录的GetEnumerator方法都有一个内联指令。只有从GetEnumerator中删除内联,问题才会消失。
注意:类似的功能不会导致此内部错误!