Pergunta

Trabalho em um grande projeto em Delphi 5. Hoje, depois de mesclar dois ramos do aplicativo, uma das centenas de unidades, UnitMain (a unidade do formulário principal, você imaginaria) parou de reconhecer o aplicativo global.

Esse é um problema bastante bizarro - eu poderia fazer com que o programa seja compilado definindo a aplicação: Tapplication em Unitmain e definindo isso para o aplicativo do nosso arquivo .dpr, mas isso leva a uma violação de acesso, que não é muito um de um Surpreenda com a aplicação sendo a coisa especial que é.

Espero que alguém tenha enfrentado o mesmo problema antes, ou saiba o suficiente dos trabalhos internos da Delphi VCL para me ajudar aqui.

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;

O erro exato é que o compilador não reconhece o aplicativo nesta unidade. Por exemplo, para um aplicativo.processmessages; Chamada, o erro é "Objeto ou tipo de classe necessário". Nenhuma das outras unidades tem esse problema.

Foi útil?

Solução

Eu acho que é mais provável que você tenha dois símbolos chamados "Aplicação" no escopo, e o da unidade de formulários não é o ativo. Verifique se a unidade de formulários na lista de usos ocorre após qualquer unidade anterior que contenha um símbolo chamado Aplicativo.

Mas você precisa fornecer mais informações. As mensagens de erro exatas, etc.

Outras dicas

Fico feliz em ver tudo funcionando agora, mas acrescentarei que outra maneira de resolver esses problemas, especialmente se você não quiser reorganizar seus usos, é prefixar o nome da unidade para o que você quiser usar, por exemplo.

Forms.Application.ProcessMessages;

Quais unidades estão na cláusula de uso na parte superior do arquivo? O aplicativo vem da unidade "Formulários".

por exemplo.

unit MyUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top