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码,转换失败返回给定的默认值

posted @ 2015-08-24 17:01  coolsundy  阅读(1142)  评论(0编辑  收藏  举报