VB6.0を使用してる初心者です。
動的配列をPutでバイナリ書き込みすると、最初の10バイトに余計なものがついてしまいます。(おそらく可変長のためその長さを示していると思う。)
データ部分のみ、出力したいのですが良い方法がありますか?
構造体の中で動的配列を定義しているので、できればループ処理で書き込みは避けたいです。
> 最初の10バイトに余計なものがついてしまいます。
ランダムアクセスモードではなく、バイナリアクセスモードを使ってください。
例えば下記のコードでは、10バイトの識別子は挿入されないと思います。
Option Explicit
Private Type Test
B() As Byte
End Type
Private Sub Form_Load()
Dim X As Test
ReDim X.B(4)
X.B(0) = &HAA
X.B(1) = &HBB
X.B(2) = &HCC
X.B(3) = &HDD
X.B(4) = &HEE
Dim FName As String
FName = "C:\A.DAT"
On Error Resume Next
Kill FName
On Error GoTo 0
Dim FNo As Integer
FNo = FreeFile()
Open FName For Binary As #FNo
Put #FNo, , X.B
Close #FNo
End Sub
ただし、
『 Put #FNo, , X.B 』
の行を、
『 Put #FNo, , X 』
にした場合は、先頭に識別子が挿入される事になります。
先頭に識別子が挿入される条件については、ヘルプの「Put ステートメント」の項を参照してみてください。
> おそらく可変長のためその長さを示していると思う。
先頭2バイトは次元数を表します。(&H0001 になっていると思います)
そして、その次の4バイトが 1次元目の要素数(LBound値とUBound値の差)を表し、続く4バイトが、1次元目の下限値(LBound値)を表します。
解決しました。ありがとうございました。
編集 削除