Kompilieren Sie Units für FMX oder VCL bedingt
Ich möchte eine andere Liste von Einheiten in der Liste habenuses
Klausel abhängig von der Kompilierung für FMX oder VCL. Im folgenden Code versuche ich zu testenFireMonkeyVersion
die in einem FMX-Projekt arbeitet (label1.Text
ist 'FMX'). Wenn ich die $ IF-Anweisung in dieuses
Klausel bekomme ich eine Fehlermeldung ([dcc32 Error] fmx_text.pas(7): E2026 Constant expression expected
). Gibt es eine Möglichkeit, die gewünschte bedingte Kompilierung zu erhalten?
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.