Hallo,
der DecimalSep wird bei StrToFix64 offensichtlich ignoriert. Weiter unterscheidet sich das Verhalten von StrToFloat und StrToFix64 bezüglich DecimalSep.
Robert
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.
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.