开发者

Porting CDate(long) from VB6 to C#

I have been tasked with converting an old VB6 program to to C#. One function I have been having trouble porting over is the calculatio开发者_运维技巧n of a birthdate from a filed that was read from a binary file:

.BirthDate = CDate((CLng(recPatient.birthDateByte2) * 256) +
                         (recPatient.birthDateByte1 + 366))

The only function I could find that is remotely similar is:

DateTime BirthDate = DateTime.ToDateTime((long)recPatient.birthDateByte2) * 256) 
                                       + (recPatient.birthDateByte1 + 366));

However ToDateTime(long) just returns an InvalidCastException.

Now I can build the string manually but I can not find any documentation anywhere on VB6's CDate(long).

What am I doing wrong?


Try to use

  DateTime.FromOADate((double)recPatient.birthDateByte2 * 256 
                     + recPatient.birthDateByte1 + 366)

instead.

Here is a small piece of documentation about CDate(long). It is not from MS and not about VB6, but since CDate is part of all VBA implementations I have seen so far, I suspect it won't make a big difference.


The old VB6 long data type becomes System.Int32, or simply int in C#

long in C# is System.Int64

double is System.double, which is a 64-bit floating point variable type

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜