[fpc-devel] TFmtBCDField

LacaK lacak at zoznam.sk
Mon Feb 21 09:22:58 CET 2011


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.



More information about the fpc-devel mailing list