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

解決


初心者  2004-08-11 00:04:31  No: 115528

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-11 00:36:13  No: 115529

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

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

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

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


初心者  2004-08-11 02:00:35  No: 115530

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加