E-LAB Computers
 

FloatToStr(f:n:n) problem

  • 1
  • 2
  • Seite 1 von 2
allan
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 66
Beiträge: 11
Dabei seit: 10 / 2016
Betreff:

FloatToStr(f:n:n) problem

 · 
Gepostet: 04.10.2017 - 16:50 Uhr  ·  #1
Hi,
With new compiler (5.09.18) any attempt to convert float to string causes crash!
This does not work any more, even in simulator:

Float1 := 0.1001;
Float2 := 2.0002;
st := FloatToStr(Float1:6:4) + ' ' + FloatToStr(Float2:6:4);
Gunter
Administrator
Avatar
Geschlecht:
Herkunft: Frankfurt Main / Germany
Beiträge: 1697
Dabei seit: 02 / 2003
Betreff:

Re: FloatToStr(f:n:n) problem

 · 
Gepostet: 04.10.2017 - 23:20 Uhr  ·  #2
allan
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 66
Beiträge: 11
Dabei seit: 10 / 2016
Betreff:

Re: FloatToStr(f:n:n) problem

 · 
Gepostet: 05.10.2017 - 13:04 Uhr  ·  #3
OK, understood, but this is so easy to reproduce, just copy-paste these 3 lines and try.
Something bad happened to floating point numbers while I did not update (since 2012).

Code

program avrprommer;

{$NOSHADOW}

{ $W+ Warnings}            {Warnings off}

Device = mega64, VCC=3.3;

Import SysTick, WatchDog;

From System Import  Float;

Define
        ProcClock   = 6000000;

        SysTick     = 10;            {msec}
        StackSize   = $0040, iData;
        FrameSize   = $0040, iData;
        
        WatchDog       = msec2000;



Implementation


{$IDATA}
{--------------------------------------------------------------}
{ Type Declarations }

type

{--------------------------------------------------------------}
{ Const Declarations }


{$EEPROM}
{--------------------------------------------------------------}

Structconst



{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}

Var

        st             : string[16];
        Float1, Float2 : float;

const


{--------------------------------------------------------------}
{ functions }




{ Main Program }
{$IDATA}

begin

  // ----- DEBUG  ----
  Float1 := 0.1001;
  Float2 := 2.0002;
  st := FloatToStr(Float1:6:4)  + '  ' + FloatToStr(Float2:6:4);

  
end avrprommer.

Gunter
Administrator
Avatar
Geschlecht:
Herkunft: Frankfurt Main / Germany
Beiträge: 1697
Dabei seit: 02 / 2003
Betreff:

Re: FloatToStr(f:n:n) problem

 · 
Gepostet: 05.10.2017 - 14:33 Uhr  ·  #4
Hi.

I found no problem with 5.09.18

Gunter
Anhänge an diesem Beitrag
FloatToStr(f:n:n) problem
Dateiname: 2017-10-05_143002.png
Dateigröße: 15.82 KB
Titel:
Heruntergeladen: 309
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: FloatToStr(f:n:n) problem

 · 
Gepostet: 05.10.2017 - 15:18 Uhr  ·  #5
Allan, Gunter,

I also checked this example

rolf
Anhänge an diesem Beitrag
FloatToStr(f:n:n) problem
Dateiname: Float.jpg
Dateigröße: 14.84 KB
Titel:
Heruntergeladen: 317
allan
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 66
Beiträge: 11
Dabei seit: 10 / 2016
Betreff:

Re: FloatToStr(f:n:n) problem

 · 
Gepostet: 05.10.2017 - 17:37 Uhr  ·  #6
I see - if you just 'Make' it works, but 'Make & Optimize' was what I did...
So it must be optimizer related problem.
Gunter
Administrator
Avatar
Geschlecht:
Herkunft: Frankfurt Main / Germany
Beiträge: 1697
Dabei seit: 02 / 2003
Betreff:

Re: FloatToStr(f:n:n) problem

 · 
Gepostet: 05.10.2017 - 17:53 Uhr  ·  #7
yes you are right !
Optimize creates an endless loop.

Merlin ?

Edit:
the problem is the optimisation of the FloatToStr function !
even "st := FloatToStr (1);" creates a loop.
Anhänge an diesem Beitrag
Dateiname: ASM-DSM.zip
Dateigröße: 16.34 KB
Titel:
Heruntergeladen: 106
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: FloatToStr(f:n:n) problem

 · 
Gepostet: 05.10.2017 - 18:56 Uhr  ·  #8
Hello Allan,

without complete environment and other infos we can't
evaluate such problems.
As always:
doesn't work ... doesn't help

rolf
  • 1
  • 2
  • Seite 1 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Thema

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.