2012-01-12 84 views
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)); 
+0

あなたのVB6の宣言は、int型=ロング間違っています。 –

+0

コピー&ペーストエラーのみである可能性がありますが、VB書き込みメソッドはファイルを読み取り用に開きます。また、ファイルが存在し、既にコンテンツがあることを気にしない限り、 "For Binary"ファイルを開くと、ファイルがまだ存在しない場合は作成されます。 – jac

+0

ありがとう、コピー貼り付けエラーでした。 @ハンス - もう一つは長いはずですか? C++のlong intはどうでしょう?VB6で正しい型は何でしょうか? – NexAddo

答えて

0

は、あなたがこれらのリンクを見た中でバイナリファイルを書き込むために私のコード

foobarvb.foo = foo 
foobarvb.bar = bar 

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 Write Lock Read Write As #fileNumber 
    Put #fileNumber, , fooBarvb 
    Close #fileNumber 
End If 

VB6

でバイナリファイルを作成するための私のコード? VB6 data types C# data types

歓声、

関連する問題