5


在我的项目中,我试图将一个名为 Lang_Unit.pas 的单元与一些类和过程连接起来,但是,在编译项目时,Delphi 给出了一个名为“[dcc32 Fatal Error] Lang_Unit.pas(5): F2084内部错误:AV07953449-R26D7474C-0"。
关键是,如果我要关闭我的项目,或者删除这个连接的单元,错误不会消失。
如果我将创建明确的默认 VCL 应用程序,它仍然会出现此错误。
只有当我重新启动我的 Delphi 2010 时,错误才会消失。
但是,如果我尝试在代码中编辑某些内容,则会再次出现此错误...有
什么问题?一切正常,我什么都没碰。
我刚刚关闭了我的电脑,然后过了一段时间打开它并打开了我的项目并编辑了我的代码,然后我看到了这个错误......

如果有帮助,这是我的 Lang_Unit.pas 代码:

unit Languages_UNIT;

interface

Uses
  System.Generics.Collections, IniFiles;

Type
TLanguages_List = Class

  private
    LangType:string;
    LangDescription:string;
    LangFile:TIniFile;

  public
  Constructor Create(LType,LDes:string; LFile:TiniFile);
  Function GetLangType:string;
  Function GetDescription:string;
  Function GetStructure:TIniFile;

End;




TLanguages_Controller = Class

  public
  Function GetStructureByType(RequestedType:string; LangList:TObjectList<TLanguages_List>):TIniFile;
  Function TypeExists(RequestedType:string; LangList:TObjectList<TLanguages_List>):Boolean;
  Procedure LoadLanguage(RequestedType:string; LangList:TObjectList<TLanguages_List>);

End;

implementation

uses Unit1;

Constructor TLanguages_List.Create(LType,LDes:string; LFile:TiniFile);
  Begin
    LangType:=LType;
    LangDescription:=LDes;
    LangFile:=LFile;
  End;

Function TLanguages_List.GetLangType:string;
  Begin
    Result:=LangType;
  End;

Function TLanguages_List.GetDescription:string;
  Begin
    Result:=LangDescription;
  End;

Function TLanguages_List.GetStructure:TIniFile;
  Begin
    Result:=LangFile;
  End;







Function TLanguages_Controller.GetStructureByType(RequestedType:string; LangList:TObjectList<TLanguages_List>):TIniFile;
var
i:integer;
  Begin
    For i := 0 to LangList.Count-1 Do
      Begin
        IF(LangList[i].GetLangType=RequestedType) Then
          Begin
            Result:=LangList[i].GetStructure;
            Break;
          End;
      End;
  End;


Function TLanguages_Controller.TypeExists(RequestedType:string; LangList:TObjectList<TLanguages_List>):Boolean;
var
i:integer;
GOTYA:Boolean;
  Begin
    GOTYA:=False;
    For i := 0 to LangList.Count-1 Do
      Begin
        IF(LangList[i].GetLangType=RequestedType) Then
          Begin
            GOTYA:=True;
            Break;
          End;
      End;
      IF(GOTYA) Then
        Result:=True
      Else
        Result:=False;
  End;


Procedure TLanguages_Controller.LoadLanguage(RequestedType:string; LangList:TObjectList<TLanguages_List>);
var
i:integer;
SLS:TIniFile;//SELECTED LANGUAGE STRUCTURE
CS:string;//CURRENT SECTION
  Begin
    //GET SELECTED LANGUAGE STRUCTURE
    For i := 0 to LangList.Count-1 Do
      Begin
        IF(LangList[i].GetLangType=RequestedType) Then
          Begin
            SLS:=LangList[i].GetStructure;
            Break;
          End;
      End;

      //START LOADING SELECTED LANGUAGE
        //TABS SECTION LOAD
        CS:='TABS';
        SD_DEFNAME:=SLS.ReadString(CS,'Speed_Dials','Speed_Dials');
        Form1.goleft.Hint:=SLS.ReadString(CS,'Back','Back');
        Form1.goright.Hint:=SLS.ReadString(CS,'Forward','Forward');
        REFLESHBTN_TEXT:=SLS.ReadString(CS,'Reflesh','Reflesh');
        STOPBTN_TEXT:=SLS.ReadString(CS,'Stop','Stop');

        //PAGE_POPUP SECTION LOAD
        CS:='PAGE_POPUP';
        Form1.ChromiumPopup.Items[0].Caption:=SLS.ReadString(CS,'Forward','Forward');
        Form1.ChromiumPopup.Items[1].Caption:=SLS.ReadString(CS,'Back','Back');
        Form1.ChromiumPopup.Items[2].Caption:=SLS.ReadString(CS,'Reflesh','Reflesh');

        Form1.ChromiumPopup.Items[3].Caption:=SLS.ReadString(CS,'Copy_Link','Copy Link');
        Form1.ChromiumPopup.Items[4].Caption:=SLS.ReadString(CS,'Save','Save');
        Form1.ChromiumPopup.Items[5].Caption:=SLS.ReadString(CS,'Print','Print');
        Form1.ChromiumPopup.Items[6].Caption:=SLS.ReadString(CS,'view_source','View Source');
        Form1.ChromiumPopup.Items[7].Caption:=SLS.ReadString(CS,'code_debug','Code Debug');

  End;


end.
4

5 回答 5

3

内部错误意味着编译器本身处于“混乱”状态。
摆脱这种情况的方法是:

将您的代码保存在安全位置以供日后参考。
重新启动 Delphi
通过撤消上次编辑或加载临时保存文件将源代码恢复到上次已知的良好状态。

您可以在文件夹中找到以前的_backup文件。

备份文件

确保将文件类型设置为any file.

为了让 Delphi 在编译时生成保存文件,您需要启用自动保存

启用自动保存

让 Delphi 保存超过默认的 10 次保存是个好主意。我喜欢将其设置为最大值:90。

在此处输入图像描述

只需继续重新启动 Delphi,并编译以前的版本,直到内部错误消失。
然后,您只需以稍微不同的方式重新创建代码。 (您确实保存了原始代码对吗?)

于 2014-04-25T17:08:15.507 回答
1

我也有这个问题(在 Delphi 10 Berlin)。它是在我更改框架中组件的名称后不久开始的。也显得很执着。但是我发现通过右键单击项目并选择“清理”然后选择“构建”解决了这个问题。

于 2016-07-15T14:54:41.700 回答
0

我的系统驱动器内存不足 300mb 时遇到了这个问题。它在缓存文件夹中特别令人窒息。在此错误之前,当我尝试将已经异步的函数递归到大型多线程应用程序中的更大异步函数时,我遇到了一个明显错误(致命错误 DBG)。编译器只是放弃了!(可能是循环引用和一个函数的子函数太多)这两个错误可能不相关。但是在重新启动后将系统驱动器释放到大约 2 Gigs 并纠正上述错误后,我做了一个清理然后它编译得很好。

于 2018-11-13T18:04:28.270 回答
0

就我而言,我制作了几个相互关联的包,并且都构建为设计和运行时包。但是有一天,我将其中一些更改为仅运行时的软件包。之后我遇到了这种错误。我花了几个小时才意识到我应该重建所有其他相关的包。这样做之后,错误最终消失了。

于 2021-09-14T18:21:17.940 回答
0

就我而言,F2084 错误代码的解决方案是将编码从 ANSI 更改为 UTF8。

于 2021-03-24T15:16:57.307 回答