Pregunta

Trabajo en un gran proyecto en Delphi 5. Hoy, después de fusionar dos ramas de la aplicación, uno de los cientos de unidades, UnitMain (la unidad del formulario principal, supongo) dejó de reconocer la aplicación global.

Este es un problema bastante extraño: podría compilar el programa definiendo Application: TApplication en UnitMain, y configurándolo en la aplicación desde nuestro archivo de proyecto .dpr, pero eso conduce a una infracción de acceso, que no es Es una gran sorpresa que la aplicación sea lo especial que es.

Espero que alguien haya enfrentado el mismo problema antes, o que sepa lo suficiente sobre el funcionamiento interno de Delphi VCL para ayudarme aquí.

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;

El error exacto es que el compilador no reconoce la aplicación en esta unidad. Por ejemplo, para un Application.ProcessMessages; llamada, el error es " Tipo de objeto o clase requerido " ;. Ninguna de las otras unidades tiene este problema.

¿Fue útil?

Solución

Creo que es muy probable que tengas dos símbolos llamados " Aplicación " en alcance, y el de la unidad de Formularios no es el activo. Asegúrese de que la unidad de Formularios en la lista de usos aparece después de cualquier unidad anterior que contenga un símbolo llamado Aplicación.

Pero, necesita proporcionar más información. Los mensajes de error exactos, etc.

Otros consejos

Me complace ver que todo funcione ahora, pero agregaré que otra forma de resolver este tipo de problemas, especialmente si no desea reorganizar sus cláusulas de uso, es prefijar el nombre de la unidad a lo que quiera usar , por ejemplo.

Forms.Application.ProcessMessages;

¿Qué unidades están en la cláusula de usos en la parte superior del archivo? La solicitud proviene de la sección " Formularios " unidad.

por ejemplo.

unit MyUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top