AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

XE2 Unterschied bei Single Ausgabe zu D7

Ein Thema von Memex · begonnen am 6. Dez 2011 · letzter Beitrag vom 6. Dez 2011
Antwort Antwort
Memex

Registriert seit: 21. Okt 2010
7 Beiträge
 
#1

XE2 Unterschied bei Single Ausgabe zu D7

  Alt 6. Dez 2011, 17:27
Delphi-Version: XE2
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:
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;
Habt ihr dieses Problem auch schon bemerkt?

Der Code kommt in dem Projekt recht häufig vor... ein Workround ist also schwierig.

Mit freundlichen Grüßen,
Memex
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#2

AW: XE2 Unterschied bei Single Ausgabe zu D7

  Alt 6. Dez 2011, 17:33
Bist aber auch aktuell was das Update angeht? Also Update#2?
Lars
  Mit Zitat antworten Zitat
Memex

Registriert seit: 21. Okt 2010
7 Beiträge
 
#3

AW: XE2 Unterschied bei Single Ausgabe zu D7

  Alt 6. Dez 2011, 17:46
ja
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#4

AW: XE2 Unterschied bei Single Ausgabe zu D7

  Alt 6. Dez 2011, 17:49
Dann poste das doch mal im QC mit Demo Projekt.
Lars
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.847 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: XE2 Unterschied bei Single Ausgabe zu D7

  Alt 6. Dez 2011, 18:12
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 6. Dez 2011 um 18:15 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.380 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: XE2 Unterschied bei Single Ausgabe zu D7

  Alt 6. Dez 2011, 18:18
Schreib mal 0:4 in die Datei. BTW, wenn rewrite schief geht, gibts nichts zu closen.
  Mit Zitat antworten Zitat
Daniel
(Administrator)

Registriert seit: 30. Mai 2002
Ort: Hamburg
15.486 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: XE2 Unterschied bei Single Ausgabe zu D7

  Alt 6. Dez 2011, 18:23
XE2? handelt es sich um eine 64-bit Anwendung?

http://docwiki.embarcadero.com/RADSt..._f%C3%BCr_x64)
Daniel R. Wolf
Admin Delphi-PRAXiS
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.847 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: XE2 Unterschied bei Single Ausgabe zu D7

  Alt 6. Dez 2011, 18:33
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 6. Dez 2011 um 18:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.177 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: XE2 Unterschied bei Single Ausgabe zu D7

  Alt 6. Dez 2011, 18:54
XE2? handelt es sich um eine 64-bit Anwendung?
Es betrifft 32-Bit und 64-Bit.

Zum Glück benutze ich weder Single noch Writeln mit etwas anderem als Strings.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.847 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: XE2 Unterschied bei Single Ausgabe zu D7

  Alt 6. Dez 2011, 19:31
Hab's mal reported: http://qc.embarcadero.com/wc/qcmain.aspx?d=101603
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf