0
C++で作成されたVB6でバイナリファイルを読み込もうとしています。VB6とVC++バイナリファイルの読み込み/書き込み
C++からVB6への変換やその逆のことについて心配する必要のあるデータ型変換はありますか?
VB6ブールデータ型のC++の同等の型は何ですか?
Public Type FooBarFileVB
foo As Long
bar As Integer
End Type
VB6でバイナリファイルを読み込むための私のコード:ここで
struct FooBarFileC
{
long int foo;
int bar;
};
はVB6で私のタイプである:ここでは
は私のC++構造体です
Dim fooBarvb As FooBarFileVB
Dim strOptionsFileName As String
strOptionsFileName = "someFile.bin"
If Dir(strOptionsFileName) <> "" Then
file_length = FileLen(strOptionsFileName)
Else
file_length = 0
End If
fileNumber = FreeFile
If (file_length <> 0) Then
Open strOptionsFileName For Binary Access Read Lock Read Write As #fileNumber
Get #fileNumber, , fooBarvb
Close #fileNumber
End If
foo = foobarvb.foo
bar = foobarvb.bar
マイC++でバイナリファイルを読み込むコード:
long int foo;
int bar;
FooBarFileC cFooBar;
ifstream fin("someFile.bin", ios::binary);
fin.read((char*)&cFooBar, sizeof(cFooBar));
fin.close();
foo = cFooBar.foo;
bar = cFooBar.bar;
C++
long int foo;
int bar;
FooBarFileC cFooBar;
cFooBar.foo = foo;
cFooBar.bar = bar;
ofstream fout("someFile.bin", ios::binary);
fout.write((char*)&cFooBar,sizeof(cFooBar));
あなたのVB6の宣言は、int型=ロング間違っています。 –
コピー&ペーストエラーのみである可能性がありますが、VB書き込みメソッドはファイルを読み取り用に開きます。また、ファイルが存在し、既にコンテンツがあることを気にしない限り、 "For Binary"ファイルを開くと、ファイルがまだ存在しない場合は作成されます。 – jac
ありがとう、コピー貼り付けエラーでした。 @ハンス - もう一つは長いはずですか? C++のlong intはどうでしょう?VB6で正しい型は何でしょうか? – NexAddo