5

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

这是一个相当奇怪的问题——我可以通过在 UnitMain 中定义 Application: TApplication 并从我们的 .dpr 项目文件中将其设置为 Application 来编译程序,但这会导致访问冲突,这并不是什么大问题令人惊讶的是 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.ProcessMessages;调用,错误是“需要对象或类类型”。其他单位都没有这个问题。

4

3 回答 3

15

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

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

于 2008-10-30T09:58:17.540 回答
9

我很高兴看到现在一切正常,但我将添加另一种解决此类问题的方法,特别是如果您不想重新排列您的使用子句,就是将单元名称添加到您想要使用的任何内容的前缀,例如。

Forms.Application.ProcessMessages;
于 2008-10-30T11:56:38.800 回答
2

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

例如。

unit MyUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
于 2008-10-30T09:35:08.557 回答