AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Compilername

Ein Thema von Willie1 · begonnen am 30. Jul 2025 · letzter Beitrag vom 31. Jul 2025
Antwort Antwort
Willie1

Registriert seit: 28. Mai 2008
742 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Compilername

  Alt 30. Jul 2025, 17:40
Hallo Leute,

ich wollte es eigentlich vermeiden. Aber jetzt will ich es doch einbauen. Kompilieren je nach Delphi-Version. Gibt es eine Liste für alle Delphi Compiler bei Meta-Statements? Es geht mir aktuell um Delphi 10.1 Berlin und Delphi 12.3 Athen.

Das Ermitteln der aktuellen Windows-Version ist mit dem Delphi von 2016 aufwendig, mit dem neuen Delphi nur eine Zeile. Da würde ich {$IF ... $ELSE} z.B. einsetzten wollen.

Gruß und Danke
Willie.

P.S. Neuerdings meldet sich immer Windows, ich solle mich anmelden, wenn ich mich hier anmelden will. Nervt euch das auch?

Noch was: meine Frau sagt immer, du ziehst Computerprobleme wie ein Magnet an. Bug hier im Forum. Ich hatte einen zu langen Titel gewählt und da kam ich nicht mehr raus. Entweder Titel fehlt oder zu lang, was ich auch schrieb! Abbruch mit Abmelden.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.549 Beiträge
 
Delphi 12 Athens
 
#2

AW: Compilername

  Alt 30. Jul 2025, 18:04
Sowas wie {$IFDEF VER280}  {$ELSE}  {$IFEND} ist halt sehr aufwändig, außer wenn man genau auf eine Version prüfen will, bzw. nicht auf genau eine. ({$IFnDEF VER280} )

Es gibt brutale INC-Dateien, z.B. im JEDI, welche auch DEFINES für Größer/Gleich und Kleiner/Gleich bereitstellen, aber mit jedem neuen Delphi rauchen die ab, weil wenn vergessen wird sie anzupassen.

Auf mehr als ein DEFINE, kann man verschachteln
Delphi-Quellcode:
{$IFnDEF VER280}
  {$IFnDEF VER290}
    wenn nichts von Beiden
  {$IFEND}
{$IFEND}
Delphi-Quellcode:
{$IFDEF VER280}
  wenn 1
{$ELSE}
  {$IFDEF VER290}
    wenn 2
  {$ELSE}
    wenn nichts von Beiden
  {$IFEND}
{$IFEND}
Aber auch hier helfen Conditional Expressions.

{$IF ...} bzw. {$IF Defined(xx)} anstatt {$IFDEF xx}

Und jetzt das Schöne, denn es gibt eine Konstante CompilerVersion.

{$IF CompilerVersion >= 36}   // oder 36.0 für ab Delphi 12.0
{$IF CompilerVersion < 36} bis Delphi 11.x (vor Delphi 12.0)
{$IF (CompilerVersion >= 30) and (CompilerVersion <= 36)} Delphi 10.0 bis 12.x

https://docwiki.embarcadero.com/RADS...iler-Versionen

ABER noch geiler ist es, wenn man auf das prüft, was man wirklich will.
{$IF Declared(TIrgendwas.Sonstwas)} , bzw. {$IF not Declared(Hulahoop)} , gibt es das Gewünschte, oder nicht? (Variable, Konstante, Typ, Klasse, Prozedur, Klassen-Methode, ....)



PS: Beim IFDEF kann man auch intern dokumentieren, da alles nach dem ersten "Parameter" ignoriert wird.
Delphi-Quellcode:
{$IFDEF VER220 DelphiXE}
{$ELSE kein DelphiXE}
{$ENDIF}
Beim $IF muß es "leider" als // Kommentar dahinter/daneben/davor/...

PSS: Sowas wie {$IF Compiler < 'Delphi XE'} wird es leider NIE geben können.
Erstmal müssten dann alle Delphis die Namen der alten Delphis mitschleppen, was kein großes Problem wäre,
aber ältere Delphis können keine Namen der neueren Delphis kennen und somit ist es auch nicht mögich mit einem unbekannten Namen zu vergleichen.
Auch Konstanten ala const cDelphiXE = 22.0; und dann {$IF CompilerVersion >= cDelphiXE} bringen nicht viel (bzw. doch, aber die mußt du dann für dich selbst bereitstellen ... Borland/Delphi kann das nicht machen), denn wenn ein altes Delphi die neuere Konstante noch nicht kennt, dann kann das halt nicht kompiliert werden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (30. Jul 2025 um 18:23 Uhr)
  Mit Zitat antworten Zitat
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
135 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Compilername

  Alt 30. Jul 2025, 19:02
Zitat:
ABER noch geiler ist es, wenn man auf das prüft, was man wirklich will.
{$IF Declared(TIrgendwas.Sonstwas)} , bzw. {$IF not Declared(Hulahoop)} , gibt es das Gewünschte, oder nicht? (Variable, Konstante, Typ, Klasse, Prozedur, Klassen-Methode, ....)
Wow! Aber ab welchem Delphi kann man sowas machen?
Renate
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.549 Beiträge
 
Delphi 12 Athens
 
#4

AW: Compilername

  Alt 30. Jul 2025, 19:10
Joar ähhhh, leider erst seit Delphi 7 / Kylix 3, also nur die letzten 23 Jahre.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (30. Jul 2025 um 20:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.756 Beiträge
 
Delphi 12 Athens
 
#5

AW: Compilername

  Alt 30. Jul 2025, 21:06
Ich glaube sogar schon ab Delphi 6. Man kann das mit {$IFDEF CONDITIONALEXPRESSIONS} prüfen, falls man auch noch ältere Delphi-Versionen unterstützen muss oder will.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
135 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Compilername

  Alt 30. Jul 2025, 23:13
Interessant, ich bin immer wieder erstaunt über was ich alles nicht weiß.
Renate
  Mit Zitat antworten Zitat
DenkDirNix

Registriert seit: 13. Dez 2018
77 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Compilername

  Alt Gestern, 07:21
Ich glaube sogar schon ab Delphi 6. Man kann das mit {$IFDEF CONDITIONALEXPRESSIONS} prüfen, falls man auch noch ältere Delphi-Versionen unterstützen muss oder will.
Oh Danke, ein neuer für meine Liste vom Compiler vorgegebener Defines. Weiss jemand noch weitere? Bisher habe ich (für Delphi 11.3, ermittelt mit http://denkdirnix.bplaced.net/Referenz/Referenz.html):

VERxxx
MSWINDOWS / ANDROID / IOS / OSX / LINUX / MACOS / POSIX / USE_LIBICU
WIN32 / WIN64
ANDROID32 / ANDROID64
OSX64
IOS64
MACOS32 / MACOS64
LINUX32 / LINUX64
POSIX32 / POSIX64
CPUX86 / CPU386 / CPUX64
CPUARM / CPUARM32 / CPUARM64
CPU32BITS / CPU64BITS
ASSEMBLER / PUREPASCAL
UNICODE
AUTOREFCOUNT
CONSOLE
NATIVECODE
CLR / NEXTGEN
UNICODE
PC_MAPPED_EXCEPTIONS
BIGENDIAN
JWA_INCLUDEMODE
EXTERNALLINKER
DEBUG_MREWS
WEAK_NATIVEINT
WEAKREF

Geändert von DenkDirNix (Gestern um 08:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.733 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Compilername

  Alt Gestern, 07:42
Zitat:
ABER noch geiler ist es, wenn man auf das prüft, was man wirklich will.
{$IF Declared(TIrgendwas.Sonstwas)} , bzw. {$IF not Declared(Hulahoop)} , gibt es das Gewünschte, oder nicht? (Variable, Konstante, Typ, Klasse, Prozedur, Klassen-Methode, ....)
Wow! Aber ab welchem Delphi kann man sowas machen?
Seit Delphi 6. Ich verwende das inzwischen an diversen Stellen in GExperts und dzlib, wo früher IFDEF VERxxx verwendet wurde.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.756 Beiträge
 
Delphi 12 Athens
 
#9

AW: Compilername

  Alt Gestern, 08:02
Weiss jemand noch weitere?
Schau mal hier: Predefined_Conditionals
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
742 Beiträge
 
Delphi 10.1 Berlin Starter
 
#10

AW: Compilername

  Alt Gestern, 18:59
Hallo Freunde/innen,

da habe ich mal wieder ein Fass aufgemacht. Es ist toll, wie schnell man hier gute Antworten bekommt. Jetzt weiß ich Bescheid.

Ich denke, dass die bedingte Kompilierung nach Delphi Version hauptsächlich für Bibliotheken und Komponenten sinnvoll ist. So kann man sein Produkt für verschiedene Kunden/innen vermarkten. Nicht jede/r hat immer die aktuellste Delphi-Version.

Willie.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 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