Условно скомпилировать модули для FMX или VCL
Я хочу иметь другой список единиц вuses
пункт в зависимости от компиляции для FMX или VCL. В приведенном ниже коде я пытаюсь проверитьFireMonkeyVersion
который работает в проекте FMX (label1.Text
является "FMX"). Когда я перемещаю оператор $ IF вuses
пункт я получаю сообщение об ошибке ([dcc32 Error] fmx_text.pas(7): E2026 Constant expression expected
). Есть ли способ получить желаемую условную компиляцию?
unit fmx_text;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
System.Variants, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Types;
{$IF FireMonkeyVersion >= 16}
{$DEFINE HAS_FMX}
{$ELSE}
{$DEFINE HAS_VCL}
{$IFEND}
type
TForm2 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.fmx}
procedure TForm2.FormCreate(Sender: TObject);
begin
label1.Text := 'Undefined';
{$IFDEF HAS_FMX}
label1.Text := 'FMX';
{$ENDIF}
{$IFDEF HAS_VCL}
label1.Text := 'VCL';
{$ENDIF}
end;
end.