Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
2.675 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Wozu ist die CompilerVersion vom Typ Extended ?

  Alt 31. Jul 2020, 06:25
Na schön, ich gehe halt immer gerne auf Nummer sicher.

Du meinst also bei
Delphi-Quellcode:
 
CONST
  CompilerVersion: Single = 34;
 
CONST
  MyCompilerVersion: Single = 34;

Result := CompilerVersion = MyCompilerVersion; // Ok, weil gleiche Typen, gleiche Bitkodierung
wäre ein direkter Vergleich möglich ?
Ist ja auch die identische Bitkodierung.

Nur wenn ich direkte konstante Zahlen, und keine mit Typ deklarierten Konstanten, im Vergleich eingebe
dann könnte das den Unterschied ausmachen.

Delphi-Quellcode:
 
CONST
  CompilerVersion: Single = 34;

Result := CompilerVersion = 34.0; // Möglicherweise OK, wenn intrinsische Typumwandlung 34.0 auf Extended
Result := CompilerVersion = 34; // Problematisch weil womöglicherweise verschiedene Typen (Integer)
Es gibt ein paar interessante Links dazu:
http://www.delphibasics.co.uk/Article.asp?Name=Numbers
http://rvelthuis.de/articles/articles-floats.html

aber irgendwie finde ich gerade nicht welchen Typ ( ABC = 34.0) eine nicht-deklarierte Konstante eigentlich bekommt.
- nimmt die den Typ an, den ABC hat ? (davon gehe ich eigentlich aus (= der Compiler optimiert so dass keine Conversion nötig ist)
- wird die immer zu Extended (conversion könnte passieren) ?
- wird die immer zu Double (conversion könnte passieren) ?

Bei Embarcadero habe ich auf die Schnelle nichts dazu gefunden ( gibt es aber bestimmt).

Geändert von Rollo62 (31. Jul 2020 um 06:34 Uhr)
  Mit Zitat antworten Zitat