![]() |
Delphi-Version: XE2
XE2 Unterschied bei Single Ausgabe zu D7
Hallo,
bei nachfolgendem Code bekomme ich Unterschiede zwischen D7 und XE2. Bei dem Single-Typ wird bei der formatierten Ausgabe bei XE2 falsch gerundet. Die Berechnung stimmt aber!
Code:
Habt ihr dieses Problem auch schon bemerkt?
procedure TForm1.Button1Click(Sender: TObject);
var Code : integer; lTF : TextFile; lReal48 : Real48; lSingle : Single; lDouble : Double; begin Edit1.Text := '0.01'; AssignFile(lTF,'D:\Test.txt'); try Rewrite(lTF); Val(Edit1.Text,lReal48,Code); Write(lTF,'Real48: '+ Edit1.Text + ' / 100 = '); Writeln(lTF,lReal48 / 100 :1:4); //D7 : result := 0.0001 //XE2: result := 0.0001 Val(Edit1.Text,lSingle,Code); Write(lTF,'Single: '+ Edit1.Text + ' / 100 = '); Writeln(lTF,lSingle / 100 :1:4); //D7 : result := 0.0001 //XE2: result := 0.0000 <--!!!! Val(Edit1.Text,lDouble,Code); Write(lTF,'Double: '+ Edit1.Text + ' / 100 = '); Writeln(lTF,lDouble / 100 :1:4); //D7 : result := 0.0001 //XE2: result := 0.0001 finally CloseFile(lTF); end; end; Der Code kommt in dem Projekt recht häufig vor... ein Workround ist also schwierig. Mit freundlichen Grüßen, Memex |
AW: XE2 Unterschied bei Single Ausgabe zu D7
Bist aber auch aktuell was das Update angeht? Also Update#2?
|
AW: XE2 Unterschied bei Single Ausgabe zu D7
ja :)
|
AW: XE2 Unterschied bei Single Ausgabe zu D7
Dann poste das doch mal im QC mit Demo Projekt.
|
AW: XE2 Unterschied bei Single Ausgabe zu D7
Delphi-Quellcode:
Writeln(lTF, FloatToStrF(lSingle / 100, ffGeneral, 1, 4));
Generell würd ich bei einer Migration empfehlen, sich auf Dauer von so Relikten zu trennen. Zumindest die Formatierung wie oben durch die entsprechenden XXXToStr Routinen erledigen zu lassen. Außerdem läuft es mir bei der Aussage "Der Code kommt in dem Projekt recht häufig vor" kalt den Rücken runter. Typischer Fall von Copy&Paste Programmierung -> refactoring: Code extrahieren und ne extra Prozedur draus machen -> Fix muss nur einmal gemacht werden und man vergisst keine Stelle. |
AW: XE2 Unterschied bei Single Ausgabe zu D7
Schreib mal 0:4 in die Datei. BTW, wenn rewrite schief geht, gibts nichts zu closen.
|
AW: XE2 Unterschied bei Single Ausgabe zu D7
XE2? handelt es sich um eine 64-bit Anwendung?
![]() |
AW: XE2 Unterschied bei Single Ausgabe zu D7
Der Fehler ist definitiv mit XE2 reingekommen, in XE ist das Ergebnis wie erwartet.
Edit: Problem ist die _Str2Ext, welche für XE2 von asm auf pure pascal umgeschrieben wurde. |
AW: XE2 Unterschied bei Single Ausgabe zu D7
Zitat:
Zum Glück benutze ich weder Single noch Writeln mit etwas anderem als Strings. :mrgreen: |
AW: XE2 Unterschied bei Single Ausgabe zu D7
Hab's mal reported:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 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