delphi面临的挑战,请各位高手接招(200分)

  • 主题发起人 主题发起人 swj
  • 开始时间 开始时间
S

swj

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在急需解决一个问题,就是在一般的数字,bcd码,字符串之间转换。
具体地说 a:integer
a=10
b=函数(a) 则将a转为bcd码00010000
然后能够用字符串显示 showmessage(b) 则能显示'00010000'
在delphi的帮助文档中有Tbcd和Tbcdfield,但没有具体的例子,我也看不太明白
希望哪位高手能帮助我一下,举个简单的例子,谢谢了
 
因为我要进行一些用bcd码的二进制的底层操作,所以我很希望delphi对于这方面也不输于
VC
 
取出每一位(个位,十位,百位...)的值,然后把每位转换为二进制,再把他们连起来
 
那tbcd 和 tbcdfield 怎么用?
我想把给一个byte型的东东赋值
要达到的目的就像这样
a:byte
a='00000011'
然后a就表示3
怎样实现?
 
看下面的代码:

Function _ToBinS(_Ah:Byte):String;
Var
_Chr : Byte;
TmCt : Byte;
TmS : String;
Begin
SetLengTh(TmS,81);
TmS:='';
For TmCt:=3 DownTo 0 Do
Begin
_Chr:=0;
If ((_Ah And (1 Shl TmCt))<>0) Then
_Chr:=1;
TmS:=TmS+Chr(48+_Chr);
End;
Result:=TmS;
End;

Function _ToBCD(_Dec:Byte):String;
Var
_Ah, _Al :Byte;
TmS : String;
Begin
Result:='无效';

SetLengTh(TmS,81);
TmS:=Trim(IntToStr(_Dec));
If (LengTh(TmS)>2) Then Exit; { 大于2为数字 }
_Ah:=StrToInt(Copy(TmS,1,1));
_Al:=StrToInt(Copy(TmS,2,1));
If Not (_Ah In [0..9]) Then Exit;
If Not (_Al In [0..9]) Then Exit;
Result:=_ToBinS(_Ah)+_ToBinS(_Al);
End;

在你的程序中调用 _ToBCD(10进制数)即可得到结果。
 
tbcd 和 tbcdfield 是用在数据库中的东东!!

上面给的例子,请验证后给我加分!!!
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部