AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Wozu ist die CompilerVersion vom Typ Extended ?
Thema durchsuchen
Ansicht
Themen-Optionen

Wozu ist die CompilerVersion vom Typ Extended ?

Ein Thema von Rollo62 · begonnen am 30. Jul 2020 · letzter Beitrag vom 31. Jul 2020
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
4.167 Beiträge
 
Delphi 12 Athens
 
#1

Wozu ist die CompilerVersion vom Typ Extended ?

  Alt 30. Jul 2020, 18:07
Hallo zusammen,

ich habe gerade in der Dokumentation nachgesehen,
Zitat:
CompilerVersion CompilerVersion: Extended = 34;
weil ich mich über die Angaben mal 34, mal 34.0 wundere.

Wer um Alles in der Welt hat für die CompilerVersion den Typ Extended ausgesucht,
gibt es dafür irgendeinen rationalen Grund ?

Gut, Extended ist meiner Meinung nach das komplette Gegenteil eines präzisen numerischen Wertes,
deshalb wäre Integer * 100 oder sowas MEINE Wahl gewesen ( so wie es auch bei VER340 gezählt wird).

Bei ungünstigen Abfragen auf = 34.0 könnte man sich üble Rundungs-Fehler einhandeln
( OK, ich mache sowieso bei Vergleichen immer >= 34.0, dann ist es schon machbar ).

Auf der anderen Seite könnte Embarcadero denken das Delphi ewig bestehen wird,
und dass dann mit Extended die Version näher am Unendlichen ist

Was hat sich der Meister dabei nur gedacht ?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Wozu ist die CompilerVersion vom Typ Extended ?

  Alt 30. Jul 2020, 18:15
Hallo,
http://docwiki.embarcadero.com/RADSt...iler-Versionen

D2007 ist 18.5

"Beachten Sie bitte, dass für Delphi 2007 zwei VERxxx-Symbole (VER180 und VER185) definiert sind. Delphi 2006 und 2007 sind binär kompatibel, sodass 180 mit beiden arbeitet. Verwenden Sie VER185, wenn Sie nur 2007 benötigen"
Heiko
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.167 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wozu ist die CompilerVersion vom Typ Extended ?

  Alt 30. Jul 2020, 18:37
Ja ist schon klar.
Nur ist Extended für Vergleiche eben extrem schlecht, weil floating point.
Ausserdem hätte Single dann wohl auch gereicht.

Was solls, ich muss das ja nicht verstehen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Wozu ist die CompilerVersion vom Typ Extended ?

  Alt 30. Jul 2020, 18:40
Da sowohl CompilerVersion als auch die 34.0 Konstanten vom gleichen Typ sind, sollte ein Vergleich auf Gleichheit schon passen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.167 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wozu ist die CompilerVersion vom Typ Extended ?

  Alt 30. Jul 2020, 18:51
Da sowohl CompilerVersion als auch die 34.0 Konstanten vom gleichen Typ sind, sollte ein Vergleich auf Gleichheit schon passen.
Ist ja wohl ein ähnliches Thema, vor einer Minute
https://www.delphipraxis.net/205093-...ml#post1470857

Nur leider kann man SameValue in der bedingten Compilierung nicht nutzen weil nicht intrinsisch, soweit ich weiss.


Das 34.0 = 34.0 gleich ist will ich mal hoffen,
wobei natürlich Abfragen auf exakt = 34.0 auch extrem selten vorkommen dürften.
Es könnte mal angenommen sein, dass nur eine bestimmte Version ein bestimmtes Problem hat,
dann würde man aber besser statt "= 34.0" doch eher ">=" und "<=" nehmen.

Also ich würde zum Beispiel statt "= 34.0" <===> das nehmen "( >=34.0 ) and ( < 34.1 )",
um ganz sicher zu sein.
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Wozu ist die CompilerVersion vom Typ Extended ?

  Alt 30. Jul 2020, 20:45
Hallo Rollo62,
in diesem Fall ist ein unscharfer Vergleich nicht notwendig, weil die typisierte Konstante
Delphi-Quellcode:
 
CONST
  CompilerVersion: Extended = 34;
per Deklaration und nicht als das Ergebnis einer Berechnung zustande kommt. Damit gibt es keine Rundungsfehler. Wenn Du Deine Compiler-Version ähnlich deklarierst
Delphi-Quellcode:
 
CONST
  MyCompilerVersion: Extended = 34;
Dann hast Du dieselbe Bitcodierung, also eine wirklich identische Extended-Zahl. Bei Single oder Double wäre das nicht der Fall. Daher ist die eindeutige Typangabe  Extended erforderlich, damit ein Vergleich auf exakte Gleichheit hinhaut.
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  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 21:39 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