2012-05-06 12 views
7

Tenemos un menus.pas modificado.¿Cómo recompilar modificaciones al archivo fuente VCL (Menus.pas)?

En

uses ...,Controls,...; 

El compilador elevó un error fatal:

[DCC Fatal Error] Menus.pas(*): F2051 Unit Controls was compiled with a different version of Menus.TPopupMenu

intentado:

borrarán todos los DCU en el proyecto.

acumulación

acumulación toda

intentado añadir el archivo a la ruta de biblioteca que lleva a añadir la carpeta db (de VCL también) y luego a

[DCC Error] jpeg.pas(872): E2065 Unsatisfied forward or external declaration: 'jpeg_save_markers'

que es un callejón sin salida.

eliminó el controls.dcu (los 3) y el delphi no sabía de forma automática para recompilarlos, en su lugar informó que falta controls.dcu.

+0

IIRC, si modifica un archivo desde la fuente de Delphi, necesita recompilarlo todo en un orden específico, nunca lo he hecho ... – ComputerSaysNo

+0

Por lo tanto, ha modificado el 'Menus.pas' en la carpeta fuente de Delphi ? Debe tener en cuenta que los archivos '* .dcu' de depuración y tiempo de ejecución se almacenan en el directorio .. \ lib y, opcionalmente, en subdirectorios (tengo Delphi 2009 a mano en este momento, por lo que podría ser ligeramente diferente) – TLama

+0

¿Puede usted? también traes 'controls.pas'? –

Respuesta

11

Aquí es cómo manejar modificaciones a archivos de código fuente VCL:

  • hacer una copia del archivo en la estructura del proyecto. Agregue el archivo a su proyecto o asegúrese de que la ruta de búsqueda encuentre su archivo modificado.
  • Haga modificaciones, pero solo en la sección de implementación. No puede modificar la sección de interfaz si usa otras unidades que usan la unidad que está modificando.
  • Defina explícitamente las opciones del compilador en la parte superior del archivo fuente modificado. Utilice las opciones predeterminadas de Delphi, que se encuentran presionando CTRL + O O en un proyecto predeterminado de vanilla.

Supongo que uno de los últimos dos puntos es lo que te está molestando.

+0

se agregó un nuevo procedimiento en xe: CloseMenu. – none

+0

@David, ¿debería agregar los valores '{$ MINSTACKSIZE $ 00004000}', '{$ MAXSTACKSIZE $ 00100000}', '{$ IMAGEBASE $ 00400000}' también? o solo el predeterminado '$ A +, B-, C +, D +, E-, F-, G +, H +, I +, J +, K-, L +, M-, N +, O +, P +, Q-, R-, S -, T-, U-, V +, W-, X +, Y +, Z1} '(Delphi 5) - que se genera con' CTRL + OO'. – kobik

+1

@kobik Mis unidades solo tienen '{$ R-, T-, H +, X +}'. Sospecho que las opciones de compilación de mis proyectos se alinean con todas las demás. No estaría de más agregar un sitio completo, p. '{$ A +, B-, C +, D +, E-, F-, G +, H +, I +, J +, K-, L +, M-, N +, O +, P +, Q-, R-, S-, T -, U-, V +, W-, X +, Y +, Z1} '. Pero no necesitas más que eso, creo. –

Cuestiones relacionadas