La compilación condicional
Artículo por Club Developers · 31 diciembre 2005
4804 vistas
La compilación condicional es la compilación de una parte del código que se rige por unas condiciones. Estas condiciones están determnadas por una serie de {$IFDEF ... } ... {$ENDIF} apoyadas por identificadores declarados con {$DEFINE} o {$UNDEF}.
Los usos más comunes son los siguientes:
Ajuntar mensajes para la depuración o puesta a punto:
Compilación dependiendo de la versión de Delphi. Hay identificadores predefinidos para cada versión de Delphi que permiten compilar para cada una de ellas.
VER80 está predefinido para Delphi1
VER90 está predefinido para Delphi2
VER100 está predefinido para Delphi3
VER120 está predefinido para Delphi4
VER130 está predefinido para Delphi5
VER140 está predefinido para Delphi6
VER150 está predefinido para Delphi7
Compilación dependiendo del SO. Este ejemplo está extraido de la definición del tipo TSearchRec usado para el manejo de FindFirst/FindNext.
Los usos más comunes son los siguientes:
Ajuntar mensajes para la depuración o puesta a punto:
delphi
{$DEFINE PUESTAAPUNTO} procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin i := HacerCalculo; {$IFDEF PUESTAAPUNTO} { esta linea sólo se compilará en la puesta a punto } ShowMessage(IntToStr(i)); {$ENDIF} TratarCalculo(i); end;
Compilación dependiendo de la versión de Delphi. Hay identificadores predefinidos para cada versión de Delphi que permiten compilar para cada una de ellas.
delphi
uses Windows, Messages, SysUtils, Classes, Controls, Forms, StdCtrls, AppEvnts, {$IfDef VER130} DsgnIntf; { Para Delphi 5 } {$Else} DesignEditors, DesignIntf; { Para Delphi 6 y 7 } {$EndIf}
VER80 está predefinido para Delphi1
VER90 está predefinido para Delphi2
VER100 está predefinido para Delphi3
VER120 está predefinido para Delphi4
VER130 está predefinido para Delphi5
VER140 está predefinido para Delphi6
VER150 está predefinido para Delphi7
Compilación dependiendo del SO. Este ejemplo está extraido de la definición del tipo TSearchRec usado para el manejo de FindFirst/FindNext.
delphi
TSearchRec = record Time: Integer; Size: Integer; Attr: Integer; Name: TFileName; ExcludeAttr: Integer; {$IFDEF MSWINDOWS} FindHandle: THandle platform; FindData: TWin32FindData platform; {$ENDIF} {$IFDEF LINUX} Mode: mode_t platform; FindHandle: Pointer platform; PathOnly: String platform; Pattern: String platform; {$ENDIF} end;