我在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;调用时,错误是“需要对象或类类型”。 没有其他单位有这个问题。

有帮助吗?

解决方案

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

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

其他提示

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

Forms.Application.ProcessMessages;

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

例如

unit MyUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top