出力したファイルにゴミが入るわけについて

解決


初心者  2004-08-10 15:04:31  No: 115528  IP: [192.*.*.*]

VB初心者です。

Type bbb
    Koumoku1 as string * 3
    Koumoku2 as string        ←  ここは、可変長とする。
    Koumoku3 as string * 3
End Type
Global aaa as bbb
----------------------------------
Private Sub Form_Load()
    aaa.Koumoku1 = "123"
    aaa.Koumoku2 = "456"
    aaa.Koumoku3 = "789"
    Open "C:\TEST.txt" For Binary As #1
        Put #1,,aaa
    Close #1
End Sub

上記のようにソースにて実行しますと作成されたファイルの中身が
"123・ 456789"となり、3のあとに2バイトのゴミが入ってしまいます。
なぜでしょうか?
回避方法等がありましたら、お教えください。
ちなみに、Koumoku2の定義は、可変となります。

編集 削除
nanashi  2004-08-10 15:36:13  No: 115529  IP: [192.*.*.*]

> "123・ 456789"となり、3のあとに2バイトのゴミが入ってしまいます。
> なぜでしょうか?

これはゴミというか……。
可変長のデータを保存する場合、
何Byteのデータが保存されているかが頭2Byteに書き込まれます。
バイナリエディタなどでみれば分かると思います。

> 回避方法等がありましたら、お教えください。

構造体をPutではなく、Print#とかで変数を一つずつ出力すれば大丈夫かと思いますが……面倒臭いですよね(^^;
逆に現状で困ることがあるのでしょうか?
同じ構造体でPut、Getしてる分には特に問題ないと思うんですが。

編集 削除
初心者  2004-08-10 17:00:35  No: 115530  IP: [192.*.*.*]

nanashiさんありがとうございました。
回避方法は、また調査してみます。

編集 削除