代码之家  ›  专栏  ›  技术社区  ›  anon6439

无法识别“应用程序”全局变量

  •  5
  • anon6439  · 技术社区  · 17 年前

    我在Delphi5的一个大项目上工作。 今天,在将应用程序的两个分支合并在一起之后,数百个单元中的一个单元UnitMain(主窗体的单元,你猜吧)停止识别应用程序全局。

    这是一个相当奇怪的问题-我可以通过定义应用程序来编译程序:在UnitMain中定义应用程序,并从我们的.dpr项目文件将其设置为应用程序,但这会导致访问冲突,应用程序是一个特殊的东西,这并不奇怪。

    我希望有人以前也遇到过同样的问题,或者对DelphiVCL的内部工作有足够的了解来帮助我走出困境。

    unit UnitMain;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Menus, ComCtrls, StdCtrls, cxButtons, ExtCtrls, IniFiles, ShellAPI,
      LMDControl, LMDBaseControl, LMDBaseGraphicControl, LMDGraphicControl,
      LMDScrollText, cxControls, cxContainer, cxListBox, Psock, NMFtp, db, DBTables,
      FileCtrl, Configs, cxHint, DSetFunc, OleCtrls, DsInformation,
      InterAppComm, ActnList, ADODB, OleServer, CRAXDRT_TLB;
    

    确切的错误是编译器无法识别此单元中的应用程序。 例如,对于application.processmessages;call,错误为“需要对象或类类型”。 其他单位都没有这个问题。

    3 回复  |  直到 17 年前
        1
  •  15
  •   Barry Kelly    17 年前

    我认为您很可能在范围内有两个称为“应用程序”的符号,而表单单元中的符号不是活动符号。确保“使用”列表中的表单单元位于包含名为“应用程序”的符号的任何先前单元之后。

    但是,你需要提供更多的信息。准确的错误信息等。

        2
  •  8
  •   Mike Sutton    17 年前

    我很高兴看到现在一切正常,但我要补充一点,解决这类问题的另一种方法,特别是如果你不想重新排列你的uses子句,那就是在单元名前面加上你想用的前缀,例如。

    Forms.Application.ProcessMessages;
    
        3
  •  2
  •   Re0sless    17 年前

    文件顶部的uses子句中有哪些单位?应用程序来自“表单”单元。

    如。

    unit MyUnit;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;