首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

VB代码转化成Delphi解决方案

2012-02-16 
VB代码转化成DelphiDimsdata(800000)AsByteDimtimeAsDatesdata(0)53sdata(1)0sdata(2)(CByte(Second(ti

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;

其他行与之类似。

热点排行