Delphi中对BCD码的直接支持 (转)
最近在Delphi下写软件,需要将数据转换为BCD码和将BCD码转换为其它数据类型,从网上搜索了一下,没有发现好的函数,于是就想自定义函数来完成BCD与其它格式的数据转换功能。但最终没有动手写,先查查Delphi的帮助吧。结果一查才发现Delphi还真的直接支持BCD码的数据。现将Delphi对BCD码的支持资料大致介绍一番:
首先,Delphi支持的BCD码的数据类型名为TBCD,它的定义如下:
type
TBcd = packed record
Precision: Byte; { 精度,1..64 }
SignSpecialPlaces: Byte; { 符号位等信息的组合,按位表示,D7:符号位,D6:Special(不知道翻译成什么意思较好), D5~D0:Places }
Fraction: packed array [0..31] of Byte; { BCD值,每个字节能够表示00~99范围内的值,Fraction[0]是最高位}
end;
对BCD的支持是在FMTBcd单元中,所以要使用BCD函数,则需要引用此单元。
Delphi的BCD函数有:
BcdAdd procedure
计算两个BCD码的和
BcdCompare function
比较两个BCD的大小
BcdDivide procedure
BCD数据相除
BcdMultiply procedure
BCD数据相乘
BcdPrecision function
返回BCD的数据个数。如BCD的123返回值为3,BCD值为9382时返回值为4。
BcdScale function
返回BCD码的小数位数
BcdSubtract procedure
两个BCD码相减
BCDToCurr function
转换BCD码为Current格式的数据类型
BcdToDouble function
BCD码转换为Double格式的数据类型
BcdToInteger function
BCD码转换为Integer格式的数据类型
BcdToStr function
BCD码转换为字符串
BcdToStrF function
BCD码转换为带格式控制的字符串
CurrToBCD function
Current数据类型转换为BCD码
DoubleToBcd function
Double数据类型转换为BCD码
FormatBcd function
格式化BCD码为字符串
IntegerToBcd function
Integer整数类型转换为BCD码
IsBcdNegative function
判断BCD是否为负数
NormalizeBcd function
将一个BCD的值根据给定的精度和小数位数转换为另外一个BCD码的值
NullBcd constant
判断BCD是否为NULL
StrToBcd function
字符串转换为BCD码
TryStrToBcd function
字符串转换为BCD码,转换失败返回给定的默认值