Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Extended-Wert "1E2500" gefressen von Delphi 7, aber nicht 10 (https://www.delphipraxis.net/80393-extended-wert-1e2500-gefressen-von-delphi-7-aber-nicht-10-a.html)

triangulum 8. Nov 2006 10:54


Extended-Wert "1E2500" gefressen von Delphi 7, abe
 
Salü,

ein aus Delphi 7 importiertes Programm hat die Zuweisungen

Delphi-Quellcode:
Min.x := 1E2500;
  Min.y := 1E2500;
  Max.x := -1E2500;
(Die Vars sind alle "extended")
In Delphi 7 einwandfrei. Im Delphi 10 kommt die Errormeldung

Ungültige reale Konstante in Zeile <soundso>

Anmerkung: 1E250 frißt er noch. 1E2500 scheint ihm aber zu groß zu sein. Wieso? Es kann doch nicht der Extended-Wertebereich von 7 auf 10 erniedrigt worden sein ...!

Balu der Bär 8. Nov 2006 11:13

Re: Extended-Wert "1E2500" gefressen von Delphi 7,
 
Moin,

Delphi 10 ist bei dir Delphi 2006?

Bei mir klappt das jedenfalls problemlos. ;)

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  test: extended;
begin
 test := 1E2500;
 test := 1E2500;
 test := -1E2500;
end;

triangulum 8. Nov 2006 12:19

Re: Extended-Wert "1E2500" gefressen von Delphi 7,
 
Ja, es ist Delphi 2006, dh. Borland Developer Studio "Architect" 2006

triangulum 8. Nov 2006 12:25

Re: Extended-Wert "1E2500" gefressen von Delphi 7,
 
308 ist der höchste Exponent, den er frißt. Also als Zuweisung Min.x := 1E308.

Nun ist 308 "zufällig" auch die Obergrenze des Double-Wertebereichs. Unsere Variablen sind aber als Extended definiert. D.h. wir hätten auch gerne den Extended-Wertebereich.
Verwechselt er Double mit Extended ....?

alzaimar 8. Nov 2006 12:31

Re: Extended-Wert "1E2500" gefressen von Delphi 7,
 
Delphi-Quellcode:
Const
  myBigBigNumber : Extended = 1E2500;
(sofern die Syntax für die Zahl korrekt ist). Und dann mit der Konstanten arbeiten. Ist sowieso viel viel besser. Denn was bedeutet 1E2500? (rethorische Frage). Grundsätzlich sollte man keine Konstanten direkt im Quellcode verwursten, die Lesbarkeit leidet darunter...

triangulum 8. Nov 2006 12:46

Re: Extended-Wert "1E2500" gefressen von Delphi 7,
 
Delphi-Quellcode:
Const myBigBigNumber : Extended = 1E2500;
Das frißt er leider auch nicht bei mir ....

Muss man in Version 10 für den Gebrauch des Extended irgendetwas importieren in der uses-Klausel? Nicht dass ich wüsste ...

alzaimar 8. Nov 2006 12:58

Re: Extended-Wert "1E2500" gefressen von Delphi 7,
 
Gut, Schau einfach in die Math.Pas, dort ist MaxExtended als
Zitat:

Zitat von Die Unit Math.Pas
Delphi-Quellcode:
const  { Ranges of the IEEE floating point types, including denormals }
  MinSingle  = 1.5e-45;
  MaxSingle  = 3.4e+38;
  MinDouble  = 5.0e-324;
  MaxDouble  = 1.7e+308;
  MinExtended = 3.4e-4932;
  MaxExtended = 1.1e+4932;
  MinComp    = -9.223372036854775807e+18;
  MaxComp    = 9.223372036854775807e+18;

Also sollte das auch ohne typisierte Konstanten kein Problem sein.

Nebenbei kann ich dein Problem nicht nachvollziehen (BDS2006 Architect):
Delphi-Quellcode:
Var
  e :Extended;

begin
  e := 1.0e+2500;
  E := 1E2500;
  E := -1E2500;
end;
wird anstandslos kompiliert... :shock:

Christian Seehase 8. Nov 2006 13:00

Re: Extended-Wert "1E2500" gefressen von Delphi 7,
 
Moin Triangulum,

was ist denn Min (bzw. Max)?

Bernhard Geyer 8. Nov 2006 13:11

Re: Extended-Wert "1E2500" gefressen von Delphi 7,
 
In der Strukturanzeige wird zwar ein Fehler gemeldet, aber Programm kann trotzdem kompiliert werden und läuft.

Ist u.U. nur der "schnelle Syntaxcheck" der hier fehlschlägt.

triangulum 8. Nov 2006 15:00

Re: Extended-Wert "1E2500" gefressen von Delphi 7,
 
Zitat:

Ist u.U. nur der "schnelle Syntaxcheck" der hier fehlschlägt.
Der Hund liegt hier wohl in der Tat woanders begraben. Weiß noch nicht wo (ist nicht die einzige Errormeldung...), aber beim Lancieren des Programms kommt eine ganz andere Fehlermeldung als die vom Schnellsyntaxcheck ....
Zitat:

was ist denn Min (bzw. Max)?
Jedenfalls im Moment keine Variablen, die er richtig erkennt ... das Übel liegt also tiefer ....


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz