PDA

Ver la Versión Completa : Inquietud {$ifdef} and {$define}


Soa Pelaez
10-12-2015, 01:51:57
Estoy tratando de realizar uses con directivas, pero aun no logro que funcione, alguien podría colaborarme lo estoy intentando realizar de esta manera.

Casimiro Notevi
10-12-2015, 10:07:08
¿Está dañado ese archivo?

Ñuño Martínez
10-12-2015, 11:40:30
Debe estarlo, porque cuando lo abro no tiene ningún contenido. :confused:

cloayza
10-12-2015, 14:33:58
A ver intenta de esta forma:

Primero: Debes crear un archivo que incluyas en tus unidades, y que este contenga todas las directivas de compilación que requiere tu proyecto.

Contenido de archivo a incluir en unidades

MIS_DEFINES.INC:

{ Directivas Condicionales de Compilación que afectaran mi programa}
{$DEFINE MENU}

{Puedes definir algunas directivas a partir de otras ya definidas}
{$IFDEF WIN32}
{$DEFINE LA_PLATAFORMA_ES_WINDOWS_32}
{$ENDIF}

{Existen directivas que te indican la versión de Delphi que estas usando para compilar}
{$IFDEF VER280} { Borland Delphi XE7 21.x }
{$DEFINE VERSION_DE_DELPHI_XE7
{$ENDIF}


Mas información sobre Directivas de versión de Delphi (http://docwiki.embarcadero.com/RADStudio/XE7/en/Compiler_Versions)

Ahora cada vez que requieras estas directivas en tus unidades debes incluir este archivo .INC

Para ello haz lo siguiente:

unit Forma2;

{$I MIS_DEFINES.INC}

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons;

type
TDForm2 = class(TForm)
SpeedButton1: TSpeedButton;
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
DForm2: TDForm2;

implementation

{$R *.dfm}

uses Forma3
{$IFDEF MENU}
,Forma1;

{$ELSE}
;
{$ENDIF}


procedure TDForm2.SpeedButton1Click(Sender: TObject);
begin
{$IFDEF MENU}
Forma1 := tforma1.Create(Self);
Forma1.ShowModal;
Forma1.Free;
{$ELSE}
MessageDlg('OTRO MODULO', mtInformation, [mbOK], 0);
{$ENDIF}
end;
end.


Saludos cordiales