DecimalSep

robert
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Hildesheim / Deutschland
Beiträge: 249
Dabei seit: 04 / 2006
Betreff:

DecimalSep

 · 
Gepostet: 07.07.2010 - 10:25 Uhr  ·  #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
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: DecimalSep

 · 
Gepostet: 07.07.2010 - 11:16 Uhr  ·  #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
Geschlecht: keine Angabe
Herkunft: Hildesheim / Deutschland
Beiträge: 249
Dabei seit: 04 / 2006
Betreff:

Re: DecimalSep

 · 
Gepostet: 07.07.2010 - 11:35 Uhr  ·  #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
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: DecimalSep

 · 
Gepostet: 07.07.2010 - 11:54 Uhr  ·  #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
Geschlecht: keine Angabe
Herkunft: Hildesheim / Deutschland
Beiträge: 249
Dabei seit: 04 / 2006
Betreff:

Re: DecimalSep

 · 
Gepostet: 07.07.2010 - 12:16 Uhr  ·  #5
Hallo Rolf,
Zitat

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
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 8 · Cache Hits: 14   97   111 · Page-Gen-Time: 0.016626s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI