4

私は、古い VB6 プログラムを C# に変換する任務を負っています。移植に苦労している関数の 1 つは、バイナリ ファイルから読み取られたファイルから生年月日を計算することです。

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

私が見つけることができた、リモートで類似している唯一の機能は次のとおりです。

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

ただしToDateTime(long)InvalidCastException.

これで文字列を手動で作成できますが、VB6 のどこにもドキュメントが見つかりませんCDate(long)

私は何を間違っていますか?

4

2 に答える 2

5

使ってみて

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

代わりは。

CDate(long) に関する小さなドキュメントを次に示します。これは MS からのものではなく、VB6 に関するものでもありませんが、CDate はこれまでに見たすべての VBA 実装の一部であるため、大きな違いはないと思います。

于 2009-12-18T18:40:32.353 に答える
0

古い VB6 の long データ型はSystem.Int32、C# では単純に int になります。

C# の long はSystem.Int64

double はSystem.double、64 ビット浮動小数点変数型です。

于 2009-12-19T09:39:57.937 に答える