PDA

Ver la Versión Completa : Directivas de compilación


duilioisola
01-12-2011, 16:43:59
Hola a todos!

Quisiera definir una directiva de compilación que se extienda a través de todas las unidades.
La directiva de compilación $DEFINE solo tiene efecto dentro de la unidad.

En el dpr tengo lo siguiente:

{$DEFINE Debug}

program Mi_Super_Programa;

uses
{$IFDEF Debug}
MemCheck in '..\Utilidades\MemCheck.pas',
ExceptLog in '..\Utilidades\ExceptLog.pas',
{$ENDIF}
...
begin
{$IFDEF Debug}
MemChk;
{$ENDIF}

Application.Initialize;

Application.CreateForm(TDMPrincipal, DMPrincipal);
Application.CreateForm(TFMPrincipal, FMMPrincipal);

Application.Run;
end.

luego en el Formulario principal:

procedure TFMPrincipal.FormDestroy(Sender: TObject);
begin
{$IFDEF Debug}
Log.SaveToFile('debug.log');
{$ENDIF}
...
end;

Pero el formulario principal no lo tiene en cuenta la directiva, porque está difinida en otra unidad.

roman
01-12-2011, 17:01:42
Si vas a las opciones del proyecto, en la ficha Directories/Conditionals, hay un cuadro de texto "Conditional defines" en donde puedes especificar símbolos globales. Es decir, que en lugar de escribir {$define debug} en tu DPR, escribes debug en dicho cuadro de texto.

// Saludos

duilioisola
01-12-2011, 18:34:03
Gracias! Funcionó!

LoPiTaL
02-12-2011, 16:02:19
Recuerda que hay ciertas directivas de compilación predefinidas, que van cambiando en función de la "Build Configuration" que estés compilando en cada momento. Por ejemplo, para las dos que vienen de "casa":
- Debug define la directiva "DEBUG" (en mayúsculas y sin comillas), y NO define la directiva "RELEASE".
- Release define la directiva "RELEASE" (mayus y sin comillas), y NO define la directiva "DEBUG".

Además, puedes añadir las directivas que necesites para cada una de las configuraciones (e incluso añadir configuraciones con directivas diferentes), así puedes cambiar rápidamente todas las directivas de compilación, sin más que cambiar de configuración.

Un saludo,
LoPiTaL