Hi Joost,
it seems, that you have started applying patch in http://bugs.freepascal.org/view.php?id=18160 or http://bugs.freepascal.org/view.php?id=16924
Great!
I have some comments, ideas, please consider them.
Because in mean time was enhanced FmtBCD unit you can remove some commented lines in fields.inc

1. VarFMTBcdCreate() should already work, so:
2447- Result := BCDToDouble(bcd)//remove when complete variant support in fmtbcd.pp will be implemented 2448- //Result := VarFMTBcdCreate(bcd) //later invalid variant type cast ?
2448+                Result := VarFMTBcdCreate(bcd)

2. VarToBCD() is already implemented, so:
2548            procedure TFMTBCDField.SetVarValue(const AValue: Variant);
2549-           var E:double;
2550            begin
2551-             E:=AValue;
2552- SetAsBCD(DoubleToBCD(E));//remove when VarToBCD in fmtbcd.pp will be implemented
2553-             //SetAsBCD(VarToBCD(AValue));
2553+            SetAsBCD(VarToBCD(AValue));
2554            end;

3. BCDToStrF there is waiting patch http://bugs.freepascal.org/view.php?id=18388 if applied, then also can be removed comments in procedure TFMTBCDField.GetText

4. Add 3th parameter to TryStrToBCD( const aValue : FmtBCDStringtype; var BCD : tBCD; DecimalSeparator : char = #0) : Boolean; so we can supply directly decimal separator '.' used in SQL and to avoid saving existing, set '.' and then restoring ... http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/packages/fcl-db/src/sqldb/sqlite/sqlite3conn.pp?r1=16948&r2=16954
(like TryStrToDate, TryStrToTime)
or
add overloaded TryStrToBCD( const aValue : FmtBCDStringtype; var BCD : tBCD; FormatSettings : TFormatSettings) : Boolean;
(like TryStrToFloat)

Thanks
Laco.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to