Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Directivas de compilación (https://www.clubdelphi.com/foros/showthread.php?t=76880)

duilioisola 01-12-2011 17:43:59

Directivas de compilación
 
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:
Código Delphi [-]
{$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:
Código Delphi [-]
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 18: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 19:34:03

Gracias! Funcionó!

LoPiTaL 02-12-2011 17: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


La franja horaria es GMT +2. Ahora son las 16:01:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi