[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 
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 ... 
(like TryStrToDate, TryStrToTime)
 add overloaded TryStrToBCD( const aValue : FmtBCDStringtype;  var BCD : 
tBCD;  FormatSettings : TFormatSettings) : Boolean;
(like TryStrToFloat)


More information about the fpc-devel mailing list