德尔福:F2084内部错误T2575

时间:2009-04-30 11:54:44

标签: delphi

有人知道这个错误意味着什么吗?

它来自我的一个单位。添加空格或换档有时会解决它,有时候不会...

我正在使用Delphi 2007。

7 个答案:

答案 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中删除内联,问题才会消失。

注意:类似的功能不会导致此内部错误!