读书人

VB代码转化成Delphi解决方案

发布时间: 2012-02-16 21:30:36 作者: rapoo

VB代码转化成Delphi
Dim sdata(800000) As Byte
Dim time As Date
sdata(0) = 53
sdata(1) = 0
sdata(2) = (CByte(Second(time)) \ 10) * 16 + CByte(Second(time)) Mod 10
sdata(3) = (CByte(Minute(time)) \ 10) * 16 + CByte(Minute(time)) Mod 10
sdata(4) = (CByte(Hour(time)) \ 10) * 16 + CByte(Hour(time)) Mod 10
sdata(5) = (CByte(Weekday(time) - 1) \ 10) * 16 + CByte(Weekday(time) - 1) Mod 10
sdata(6) = (CByte(Day(time)) \ 10) * 16 + CByte(Day(time)) Mod 10
sdata(7) = (CByte(Month(time)) \ 10) * 16 + CByte(Month(time)) Mod 10
sdata(8) = (CByte(Right(Str(Year(time)), 2)) \ 10) * 16 + CByte(Right(Str(Year(time)), 2)) Mod 10

怎么转化成delphi


[解决办法]
uses DateUtils;
var
sdata:array[0..799999]of Byte;
time :TdateTime;
begin
time:=now;
sdata[0]:=53;
sdata[1]:=0;
sdata[2]:=Trunc(SecondOf(time)/10)*16+SecondOf(time) mod 10;
.....
.....
end;
[解决办法]
不是十六进制, 而是BCD格式, 即一个字节的高四位存放某个两位十进制数的十位数字, 低四位存放个位数字。
[解决办法]
VB:
sdata(2) = (CByte(Second(time)) \ 10) * 16 + CByte(Second(time)) Mod 10

Delphi:
sdata[2] := SecondOf(Time) div 10 * 16 + SecondOf(Time) mod 10;

其他行与之类似。

读书人网 >.NET

热点推荐