AGB  ·  Datenschutz  ·  Impressum  







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

Delphi-Version ermitteln

Ein Thema von lxo · begonnen am 6. Apr 2023 · letzter Beitrag vom 7. Apr 2023
Antwort Antwort
lxo

Registriert seit: 30. Nov 2017
296 Beiträge
 
Delphi 12 Athens
 
#1

AW: Delphi-Version ermitteln

  Alt 6. Apr 2023, 14:52
Bei Delphi 10.3 z.B. könnte ich das auch anscheinend gar nicht ermitteln oder gab es da noch was anderes?

Delphi-Quellcode:
// Delphi 11.3

  RTLVersion = 35.00;
  RTLVersion111 = True;
  RTLVersion112 = True;
  RTLVersion113 = True;
 {$HPPEMIT '#define RTLVersionC 3500'}
 {$HPPEMIT '#define RTLVersion111C'}
 {$HPPEMIT '#define RTLVersion112C'}
 {$HPPEMIT '#define RTLVersion113C'}
Delphi-Quellcode:
// Delphi 10.3.3

  RTLVersion = 33.00;
 {$HPPEMIT '#define RTLVersionC 3300'}
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Delphi-Version ermitteln

  Alt 6. Apr 2023, 14:58
Delphi-Quellcode:
{$IF CompilerVersion = 34} 
  {$IF Declared(RTLVersion113)} 
    // Delphi 11.3
  {$ELSEIF Declared(RTLVersion112)} 
    // Delphi 11.2
  {$ELSEIF Declared(RTLVersion111)} 
    // Delphi 11.1
  {$ELSE} 
    // Delphi 11.0
  {$IFEND}
{$ELSEIF CompilerVersion = 33}
  {$IF Declared(RTLVersion1042)} 
    // Delphi 10.4.2
  {$ELSEIF Declared(RTLVersion1041)} 
    // Delphi 10.4.1
  {$ELSE} 
    // Delphi 10.4
  {$IFEND}
{$ELSEIF CompilerVersion = 32}
usw.
{$IFEND}
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Delphi-Version ermitteln

  Alt 6. Apr 2023, 15:02
siehe #7

nee, gibt paktisch nur die drei
System.RTLVersion
System.CompilerVersion
FMX.Types.FireMonkeyVersion

ABER
https://www.delphipraxis.net/1473778-post5.html
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Delphi-Version ermitteln

  Alt 6. Apr 2023, 15:06
Bei Delphi 10.3 z.B. könnte ich das auch anscheinend gar nicht ermitteln oder gab es da noch was anderes?
Das ist in der Tat so. Die Konstanten für die Zwischenversionen gibt es noch nicht so lange. Bei den anderen Versionen muss man eventuell nach anderen Kriterien suchen. Leider ist das nicht ganz einfach, da innerhalb eines Hauptrelease ja Änderungen im Interface-Teil bestimmten Restriktionen unterliegen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Delphi-Version ermitteln

  Alt 6. Apr 2023, 15:10
Die HPPEMIT sind ja nur für den C++Builder, nicht für Delphi.

Der C++Builder kann ja Delphi-Units benutzen ... wäre zu geil, wenn man auch im Delphi direkt C++-Header/Code linken könnte.

Zitat:
Das ist in der Tat so.
Da kann man teilweise mit {$IF Declared(...)} und {$IF Defined(...)} bzw. {$IFDEF ...} rumpfuschen.

Declared geht z.B. für Konstanten, Variablen, Typen/Klassen und Funktionen, also auf Etwas, was da neu/entfernt/verschoben wurde.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Apr 2023 um 15:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Delphi-Version ermitteln

  Alt 6. Apr 2023, 15:20
Da kann man teilweise mit {$IF Declared(...)} und {$IF Defined(...)} bzw. {$IFDEF ...} rumpfuschen.
Das Problem ist hier das teilweise.

Die Frage ist doch eher: Warum will man das wissen?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
296 Beiträge
 
Delphi 12 Athens
 
#7

AW: Delphi-Version ermitteln

  Alt 6. Apr 2023, 15:57
Da kann man teilweise mit {$IF Declared(...)} und {$IF Defined(...)} bzw. {$IFDEF ...} rumpfuschen.
Das Problem ist hier das teilweise.

Die Frage ist doch eher: Warum will man das wissen?
Einfach nur als Information für uns Entwickler damit man genau sehen kann mit welcher Delphi Version diese Anwendung erzeugt wurde.
Auch wenn der Compiler nicht geändert wurde von 11.2 auf 11.3 gibt es ja schon Anpassungen/Änderungen die Auswirkung auf meine Anwendung haben.

Oder war das "Warum will man das wissen?" an himitsu und seinem c++ Thema gerichtet?

Geändert von lxo ( 6. Apr 2023 um 16:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Delphi-Version ermitteln

  Alt 6. Apr 2023, 17:03
Ja, es wäe schön, wenn es einfach ginge, mit nur einer Compiler/Delphi-VersionsInformationsKonstante, inkl. Version, Subversion/Update und womöglich auch Patch und Hotfix,
aber wenn das nicht geht, dann muß man eben selber auf irgendwas Anderes prüfen.

Es gibt ja für Vieles mehrere Wege:
Delphi-Quellcode:
{$IF CompilerVersion >= 20.0}  // oder so ein perverser {$IFDEF VER123}-Marathon, der aber nur für alte/bekannte Versionen funktioniert und "neue" Delphis noch nicht kennt

{$IF Declared(UnicodeString)}

{$IF SizeOf(Char) = 2}

{$IFDEF UNICODE}
OK, etwas "Lesbares" wäre auch mal zu geil.
Delphi-Quellcode:
{$IF (DelphiVersion >= 'XE') and (DelphiVersion <= '11.2')}

{$IF (DelphiVersion >= 'XEu2') and (DelphiVersion <= '10.1.2')}
Aber sowas kann eigentlich NIE funktionieren, es sei denn der Compiler würde sich online eine aktuelle Versionsliste besorgen können,
denn ein älterer Compiler kennt neue Delphis noch nicht und weiß z.B. somit nicht dass XE zwar größer als 7 ist, aber kleiner als 10 ist, wenn er die 10 noch nicht kennt.
Wenn Delphi bei den aktuellen Zahlen bleiben würde und Zahlen immer nur größer werden, dann wäre es einfacher, aber wer weiß ob nicht doch irgendwann wieder sowas wie "XE" kommt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Apr 2023 um 17:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Delphi-Version ermitteln

  Alt 6. Apr 2023, 17:14
Delphi-Quellcode:
unit System.Defines;

interface

const
  RTLVersion11Alexandria = 35.0;
  RTLVersion104Sydney = 34.0;
  RTLVersion103Rio = 33.0;
  RTLVersion102Tokyo = 32.0;
  RTLVersion101Berlin = 31.0;
  RTLVersion10Seattle = 30.0;
  RTLVersionXE8 = 29.0;
  RTLVersionXE7 = 28.0;
  RTLVersionXE6 = 27.0;
  RTLVersionXE5 = 26.0;
  RTLVersionXE4 = 25.0;
  RTLVersionXE3 = 24.0;
  RTLVersionXE2 = 23.0;
  RTLVersionXE = 22.0;
  RTLVersion2010 = 21.0;
  RTLVersion2009 = 20.0;
  RTLVersion2007Net = 19.0;
  RTLVersion2007 = 18.5;
  RTLVersion2006 = 18.0;
  RTLVersion2005 = 17.0;
  RTLVersion8Net = 16.0;
  RTLVersion7 = 15.0;

const
  CompilerVersion11Alexandria = 35.0;
  CompilerVersion104Sydney = 34.0;
  CompilerVersion103Rio = 33.0;
  CompilerVersion102Tokyo = 32.0;
  CompilerVersion101Berlin = 31.0;
  CompilerVersion10Seattle = 30.0;
  CompilerVersionXE8 = 29.0;
  CompilerVersionXE7 = 28.0;
  CompilerVersionXE6 = 27.0;
  CompilerVersionXE5 = 26.0;
  CompilerVersionXE4 = 25.0;
  CompilerVersionXE3 = 24.0;
  CompilerVersionXE2 = 23.0;
  CompilerVersionXE = 22.0;
  CompilerVersion2010 = 21.0;
  CompilerVersion2009 = 20.0;
  CompilerVersion2007 = 18.5;
  CompilerVersion2006 = 18.0;
  CompilerVersion2005 = 17.0;
  CompilerVersion8Net = 16.0;
  CompilerVersion7 = 15.0;

implementation

end.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 09:20 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