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

时间:2008-10-30 09:25:55

标签: delphi delphi-5

我在Delphi 5中开展一个大型项目。 今天,在将应用程序的两个分支合并在一起之后,数百个单元中的一个,UnitMain(主要形式的单元,你猜)会停止识别应用程序全局。

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

我希望有人之前遇到过同样的问题,或者对Delphi VCL的内部工作有足够的了解来帮助我。

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。 例如,对于Application.ProcessMessages;调用,错误是“需要对象或类类型”。 没有其他单位有这个问题。

3 个答案:

答案 0 :(得分:15)

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

但是,您需要提供更多信息。确切的错误消息等。

答案 1 :(得分:9)

我很高兴看到现在每个人都在工作,但我会添加另一种方法来解决这些问题,特别是如果你不想重新安排你的使用条款是将单位名称加到你想要使用的任何名称前面,例如。

Forms.Application.ProcessMessages;

答案 2 :(得分:2)

文件顶部的uses子句中有哪些单位?申请来自“表格”单位。

例如

unit MyUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;