DecimalSep

robert
Benutzer
Avatar
Gender: n/a
Location: Hildesheim / Deutschland
Posts: 249
Registered: 04 / 2006
Subject:

DecimalSep

 · 
Posted: 07.07.2010 - 10:25  ·  #1
Hallo,
der DecimalSep wird bei StrToFix64 offensichtlich ignoriert. Weiter unterscheidet sich das Verhalten von StrToFloat und StrToFix64 bezüglich DecimalSep.

Robert

Code

program bla;

{$NOSHADOW}
{ $WG}                     {global Warnings off}

Device = mega2560, VCC=5;
{ $BOOTRST $1F000}         {Reset Jump to $1F000}

Import SysTick, SerPort;

From System Import Float, Fix64;


Define
  ProcClock      = 16000000;       {Hertz}
  SysTick        = 10;             {msec}
  StackSize      = $0100, iData;
  FrameSize      = $0100, iData;
  SerPort        = 57600, Stop2;    {Baud, StopBits|Parity}
  RxBuffer       = 8, iData;
  TxBuffer       = 8, iData;

  DecimalSep     = ',';

Implementation

{$IDATA}

const
  s1 : string = '123,456';
  s2 : string = '123.456';

type

var
  f : Fix64;
  x : Float;
  s : string[20];
  

begin
  EnableInts;
  WriteLn(SerOut, 'Fix');
  s := s1;
  f := StrToFix64(s);
  s := Fix64ToStr(f);
  WriteLn(SerOut, s);  //Ausgabe: 0,000...    nicht konvertiert
  s := s2;
  f := StrToFix64(s);
  s := Fix64ToStr(f);
  WriteLn(SerOut, s);  //Ausgabe: 123,4560... trotz '.' konvertiert
  
  
  WriteLn(SerOut, 'Float');
  s := s1;
  x := StrToFloat(s);
  s := FloatToStr(x);
  WriteLn(SerOut, s);  //Ausgabe: 123,456...   korrekt
  s := s2;
  x := StrToFloat(s);
  s := FloatToStr(x);
  WriteLn(SerOut, s);  //Ausgabe: 123,0000...  nur bis zum "." konvertiert
end bla.
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: DecimalSep

 · 
Posted: 07.07.2010 - 11:16  ·  #2
Hallo Robert,

der Bug ist jetzt beseitigt. Allerdings geben falsche DecimalSep auch weiterhin falsche Resultate. Es fehlt der blue-screen im AVRco :police:

Mit
if RunErr then ...
kann eine fehlerhafte Konvertierung abgefragt werden.

rolf
robert
Benutzer
Avatar
Gender: n/a
Location: Hildesheim / Deutschland
Posts: 249
Registered: 04 / 2006
Subject:

Re: DecimalSep

 · 
Posted: 07.07.2010 - 11:35  ·  #3
Hallo Rolf,
war ja mal wieder fix. Danke.

Ist aber klar, dass ich bei falschem DecimalSep kein korrektes Ergebnis erwarten kann. Der Unterschied ist mir halt aufgefallen und war auch nur als Hinweis gedacht.

Der Tipp mit RunErr ist allerdings hilfreich.

Robert
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: DecimalSep

 · 
Posted: 07.07.2010 - 11:54  ·  #4
Hallo Robert,

mir stinkt es selbst wenn ich in Tools auf Bugs stosse und dann Monate auf ein fix warten muss.
RunErr ist zwar hilfreich, man sollte das allerdings nie gebrauchen, denn dann hat man was falsch gemacht. Oder der User hat was falsches eingegeben. Dann allerdings ist RunErr eine grosse Hilfe.

rolf
robert
Benutzer
Avatar
Gender: n/a
Location: Hildesheim / Deutschland
Posts: 249
Registered: 04 / 2006
Subject:

Re: DecimalSep

 · 
Posted: 07.07.2010 - 12:16  ·  #5
Hallo Rolf,
Quote

RunErr ist zwar hilfreich, man sollte das allerdings nie gebrauchen...

:lol:

Ich denke während der Entwicklung und zum Debuggen darf man das schon gebrauchen.

Robert
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   96   110 · Page-Gen-Time: 0.028071s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI