Question

Je travaille sur un grand projet dans Delphi 5. Aujourd’hui, après la fusion de deux branches de l’application, l’une des centaines d’unités, UnitMain (l’unité de la fiche principale, devinez-vous), a cessé de reconnaître l’application globale.

Il s’agit d’un problème assez étrange. Je pourrais compiler le programme en définissant Application: TApplication dans UnitMain et en le définissant dans l’application à partir de notre fichier de projet .dpr, mais cela conduit à une violation d’accès, qui n’est pas Ce qui est surprenant avec Application, c'est la particularité.

J'espère que quelqu'un a déjà fait face au même problème ou en sait assez sur le fonctionnement interne de Delphi VCL pour m'aider ici.

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;

L'erreur exacte est que le compilateur ne reconnaît pas l'application dans cette unité. Par exemple, pour un Application.ProcessMessages; appel, l’erreur est "Type d’objet ou de classe requis". Aucune des autres unités n’a ce problème.

Était-ce utile?

La solution

Je pense qu'il est fort probable que vous ayez deux symboles appelés "Application". dans la portée, et celui de l'unité Formulaires n'est pas l'actif. Assurez-vous que l'unité Forms dans la liste des utilisations vient après toute unité antérieure contenant un symbole appelé Application.

Toutefois, vous devez fournir davantage d'informations. Les messages d'erreur exacts, etc.

Autres conseils

Je suis heureux de voir que tout fonctionne maintenant, mais j'ajouterai qu'un autre moyen de résoudre de tels problèmes, en particulier si vous ne souhaitez pas réorganiser vos clauses uses, consiste à préfixer le nom de l'unité en fonction de ce que vous souhaitez utiliser. , par exemple.

Forms.Application.ProcessMessages;

Quelles unités se trouvent dans la clause uses en haut du fichier? L'application provient des "Formulaires". unité.

par exemple.

unit MyUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top