Domanda

Lavoro su un grande progetto in Delphi 5. Oggi, dopo aver unito insieme due rami dell'app, una delle centinaia di unità, UnitMain (l'unità del modulo principale, indovineresti) ha smesso di riconoscere l'Applicazione globale.

Questo è un problema piuttosto bizzarro: potrei far compilare il programma definendo Application: TApplication in UnitMain e impostandolo sull'applicazione dal nostro file di progetto .dpr, ma questo porta a una violazione di accesso, che non è è una sorpresa che l'applicazione sia la cosa speciale.

Spero che qualcuno abbia già affrontato lo stesso problema o sappia abbastanza dei meccanismi interni di Delphi VCL per aiutarmi qui.

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'errore esatto è che il compilatore non riconosce l'applicazione in questa unità. Ad esempio, per un Application.ProcessMessages; call, l'errore è " Oggetto o tipo di classe richiesto " ;. Nessuna delle altre unità ha questo problema.

È stato utile?

Soluzione

Penso sia molto probabile che tu abbia due simboli chiamati " Applicazione " nell'ambito e quello dell'unità Forms non è quello attivo. Assicurarsi che l'unità Moduli nell'elenco degli usi venga dopo ogni unità precedente che contiene un simbolo chiamato Applicazione.

Ma devi fornire maggiori informazioni. I messaggi di errore esatti, ecc.

Altri suggerimenti

Sono lieto di vedere che tutto funziona ora, ma aggiungerò che un altro modo per risolvere tali problemi, soprattutto se non si desidera riorganizzare le clausole di utilizzo, è quello di aggiungere il nome dell'unità a qualunque cosa si desideri utilizzare , ad es.

Forms.Application.ProcessMessages;

Quali unità sono nella clausola use nella parte superiore del file? L'applicazione proviene dai "Moduli" unità.

ad es.

unit MyUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top