Ver Mensaje Individual
  #7  
Antiguo 11-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 30
jachguate Va por buen camino
los defines sirven para que el compilador ignore o incluya fragmentos de código si no se ha definido un simbolo específico de compilación condicional.

Te pongo un ejemplo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  {$ifdef Trial}
    ShowMessage('Aquí se realiza el cálculo de comisiones en la versión '
    + 'de pago.  Entrá a www.david.com para comprar la licencia!');
  {$else}
      EjecutarCalculoComisiones;
  {$endif}
end;

Cuando el compilador esté procesando tu código, si se ha declarado previamente el simbolo Trial, tomará las línea que manda mostrar un mensaje, mientras que si dicho simbolo no está declarado tomará la línea que manda a calcular las comisiones.

El uso de directivas del compilador es recomendable, pero tiene sus "detalles", pues si no se es cuidadoso al compilar o al declarar los símbolos es posible que termines incluyendo código que no deseas o que dejes de incluir código que debiera estar allí. Si tenes el cuidado adecuado, la gran ventaja es que no hay hacker que pueda habilitar tal o cual funcionalidad de tu programa, pues la funcionalidad simplemente no existirá el el exe, dado que el compilador la ha ignorado antes de ensamblarlo.

La forma de declarar un símbolo condicional es, bien a nivel de unidad, así:

Código Delphi [-]
{$define trial}

O bien a nivel del proyecto completo, en Project/Options/"Directories/Conditionals"/Conditional defines, podes poner tantos como querras separados por punto y coma.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 11-10-2006 a las 01:22:57.
Responder Con Cita