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

Delphi中对BCD码的直接支持 (转)的更多相关文章

  1. Delphi中BCD和Currency类型

    用了这些年的Delphi,竟然对Currency及TBCDField一知半解,下文给了很好的讲解,值得一读. 一.       BCD类型 BCD即Binary-Coded Decimal?,在Del ...

  2. 谈Delphi中SSL协议的应用(好多相关文章)

    摘要:本文主要介绍如何在Delphi中使用SSL协议.一共分为七个部分:(1)SSL协议是什么?(2)Delphi中如何使用SSL协议?(3)SSL客户端编程实例.(4)SSL服务端编程实例.(5)S ...

  3. 老陈---谈Delphi中SSL协议的应用[转]

    摘要:本文主要介绍如何在Delphi中使用SSL协议.一共分为七个部分:(1)SSL协议是什么?(2)Delphi中如何使用SSL协议?(3)SSL客户端编程实例.(4)SSL服务端编程实例.(5)S ...

  4. BCD码

    BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码,是用4位二进制数来表示1位十进制数中的0~9这10个数码,用一种使用二进制编码十进制的数字编码形式.BCD码这种 ...

  5. FPGA中将十进制数在数码管中显示(verilog版)--二进制转换为BCD码

    这周有朋友问怎样在fpga中用数码管来显示一个十进制数,比如1000.每个数码管上显示一位十进制数.如果用高级语言来分离各位,只需要分别对该数做1000,100,10对应的取商和取余即可分离出千百十个 ...

  6. delphi 中几种多线程操作方式

    在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程. 为了保证线程的安全性请大家看看下面介绍 Delphi多线程同步的一些处理方案大家可以参考:http: ...

  7. Delphi 中 COM 实现研究手记(一)

    前言 前些日子用 Delphi 写了一个 Windows 外壳扩展程序,大家知道 Windows 外壳扩展实际上就是 COM 的一种应用 -- Shell COM,虽然整个程序写得还算比较顺利,但写完 ...

  8. DELPHI中多线程知识【转】

    本文的内容取自网络,并重新加以整理,在此留存仅仅是方便自己学习和查阅.所有代码均亲自测试 delphi7下测试有效.图片均为自己制作. 多线程应该是编程工作者的基础技能, 但这个基础我从来没学过,所以 ...

  9. 转发 Delphi中线程类TThread 实现多线程编程

    Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchr ...

随机推荐

  1. log4net的配置与使用

    log4net解决的问题是在.Net下提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括MS SQ ...

  2. c++ 左值右值 函数模板

    1.先看一段代码,这就是一种函数模板的用法,但是红色的部分如果把a写成a++或者写成一个常量比如1,都是编译不过的,因为如果是a++的话,实际上首先是取得a的 值0,而0作为一个常量没有地址.写成1也 ...

  3. Freemarker使用入门

    一.概述: FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 Template + data_model = output FreeMarker也是与Web容 ...

  4. linux环境下libevent的使用

    step1:安装libevent yum install libevent step2: 代码入下: #include <sys/socket.h> #include <sys/ty ...

  5. SimpleHashTable

    简单的Hash Table 实现,下次被问到,至少不是从0开始.不过笔试问这个毕竟不多. public struct Item<K, V> { public K Key { get; se ...

  6. PHP二维数组的分页

    方法一: <?php $arr_click = array( array( 'clicks' => 3, 'clickDate' =>'2015-10-11' ), array( ' ...

  7. JSP/Servlet的编码原理

    转自:http://janwer.iteye.com/blog/150226 首先,说说 JSP/Servlet 中的几个编码的作用 在 JSP/Servlet 中主要有以下几种设置编码的方式: pa ...

  8. Android之Adapter用法总结(转)

    Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...

  9. barabasilab-networkScience学习笔记3-随机网络模型

    第一次接触复杂性科学是在一本叫think complexity的书上,Allen博士很好的讲述了数据结构与复杂性科学,barabasi是一个知名的复杂性网络科学家,barabasilab则是他所主导的 ...

  10. 在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题

    SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\KK.xls";User ID=A ...