2

問題が見つかりました。VB6 と C# を使用してバイナリ ファイルを作成する必要があります。以下に示すように同じ変数セットを書いたとき、両方の出力が異なります。文字列を表す方法は、C# と VB6 では異なると推測できます。両方の書き込みを似たものにする方法があるかどうか知りたかっただけです。場合によってはC#とVBで同じ内容を書かないといけないこともあるから

VB6

nFileNum = FreeFile
stringVal = ""
stringVal2 = "Hello"
i = 25
sFilename = "C:\Temp\fromVB.bin"
Open sFilename For Binary As #nFileNum
    Put #nFileNum, , stringVal
    Put #nFileNum, , stringVal2
    Put #nFileNum, , i
Close #nFileNum

C#

    const string fileName = @"C:\Temp\fromC#.bin";
    string stringVal = "";
    string stringVal2 = "Hello";
    int i = 25;

    using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create)))
    {
        writer.Write(stringVal);
        writer.Write(stringVal2);
        writer.Write(i);
    }
4

2 に答える 2

2

それはほとんど同じコードではありません。VB.Net で古い File Number ベースの IO を使用するべきではありません。その API は、VB6 から .Net へのコードの移植を容易にするという唯一の目的のためにまだ存在しています。VB.Net は、C# コードと同じ API を使用する必要があります。一致する結果が必要な場合はなおさらです。

Const fileName As String = "C:\Temp\fromVB.bin"
Dim stringVal As String = ""
Dim stringVal2 As String = "Hello"
Dim i As Integer = 25

Using writer As New BinaryWriter(File.Open(fileName, FileMode.Create))
    writer.Write(stringVal)
    writer.Write(stringVal2)
    writer.Write(i)
End Using
于 2013-05-23T04:51:00.860 に答える
1

VB6 によって書き込まれたデータの正確な形式を思い出せません (テストするのも面倒です) が、文字列の長さと文字列自体を別々に書き出す必要があるかもしれません。16 進エディタを使用してファイルを表示すると、正確な形式を確認できるはずです。

于 2013-05-24T09:41:52.260 に答える