![]() |
Via Compiler Bedingung FireMonkey erkennen
Hallo zusammen,
ich weiß nicht, ob ich zu doof zum Suchen bin. Gibt es eine Möglichkeit, dass ich im Compiler Vorgang erkenne, ob es eine VCL oder FMX Anwendung ist? So wie:
Delphi-Quellcode:
Danke
{$IFDEF WIN32}
|
AW: Via Compiler Bedingung FireMonkey erkennen
![]() Das geht nur mit Boardmitteln so weit ich weiß nicht. Der Compiler weiß an der Stelle nicht ob du VCL oder FMX erzeugst, nur welche Zielplattform. Es ist sogar möglich VCL und FMX zu mischen. Was du machen kannst ist, pro Projekt entsprechende Werte selbst zu definieren (zB in den Projektoptionen -> Delphi-Compiler -> Bedingungen). |
AW: Via Compiler Bedingung FireMonkey erkennen
Nein, gibt es nicht.
Erkläre mal, wozu du das benötigst. Davon hängt nämlich ab, welche Alternativen es gibt. |
AW: Via Compiler Bedingung FireMonkey erkennen
Zitat:
Man kann in einer Anwendung sogar Beides oder Nichts drin haben. "Falls" im Projekt der VCL- oder FMX-Namespace definiert ist, dann könnte man sich zwei Units basteln -> vcl.test.pas und fmx.test.pas . Da drin dann eine Konstante deklarieren und "test" ins Uses aufnehmen. Je nach definiertem Standardnamespace kompiliert dann eine der beiden Units oder knallt, falls keiner der Namespaces existiert. Was ich mal wollte, war in einer Komponente abhängig von VCL oder FMX die passenden Units zu verwenden. Alles was nicht Windows ist, ist niemals VCL, aber bei Windows ist das nicht so leicht. Abhängig davon kommt es dann drauf an, welche TCanvas, TControl, TApplication usw. verwendet werden müssen. |
AW: Via Compiler Bedingung FireMonkey erkennen
Naja, ich mach das halt mit einem global Define:
USE_FMX oder USE_VCL Ist nicht super elegant, funktioniert aber als Übergangslösung bis es etwas Besseres gibt. Muss man halt bei jedem Projekt einmal setzen. Rollf |
AW: Via Compiler Bedingung FireMonkey erkennen
Wenn du eine Datei namens UserTools.proj im AppData-Verzeichnis (bei Tokyo ist das %APPDATA%\Embarcadero\BDS\19.0) anlegst und mit dem unten stehenden Inhalt füllst, dann kannst du das aktuelle Framework über
Delphi-Quellcode:
oder
{$IFDEF FrameWork_VCL}
Delphi-Quellcode:
abfragen. Sollte wider Erwarten eine gleichnamige Datei schon vorhanden sein, musst du halt den Eintrag darin sinnvoll ergänzen.
{$IFDEF FrameWork_FMX}
XML-Code:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <DCC_Define>FrameWork_$(FrameworkType);$(DCC_Define)</DCC_Define> </PropertyGroup> </Project> |
AW: Via Compiler Bedingung FireMonkey erkennen
Kann man eventuell die Konstante FireMonkeyVersion prüfen? Oder ist die auch bei VCL definiert?
![]() |
AW: Via Compiler Bedingung FireMonkey erkennen
Zitat:
Zitat:
Übrigens gibt es noch ein drittes Define, wenn ein Projekt weder FMX noch VCL ist:
Delphi-Quellcode:
FrameWork_None
|
AW: Via Compiler Bedingung FireMonkey erkennen
Delphi-Quellcode:
{$If declared(TGraphic)}
Unter FMX gibt es die Klasse TGraphic in der Graphics unit nicht. Isn hack den ich auch in meinem AsciiImage verwendet hab :D Und abhängig davon kannst du dir defines bezüglich FMX/VCL machen. Grüße Memnarch |
AW: Via Compiler Bedingung FireMonkey erkennen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz