• ベストアンサー

TYPE分の使い方で

Visual Basic 6.0です。 バイナリーファイルを読むのに使用するため 下記のようなType宣言をしています。 今 KOUMOKU は String * 10で宣言しているのですが 読み込むファイルでいろいろあるので (*8,*6,*4など) たくさんのType分を作っているのですが 一つのType分で宣言できる方法はないでしょうか。 Type TYPEA KOUMOKU As String * 10 <-この10が任意で可変できないでしょうか NAMAE As String * 20 BUKA As String * 5 End Type

質問者が選んだベストアンサー

  • ベストアンサー
noname#221368
noname#221368
回答No.1

 可変にはできません。だから発想の転換をしましょう。以下は、読み込むバイナリ・ファイルの出力も、自分でやる事を前提にします。  バイナリ・ファイルの読み込みはもともと、バイト並びの区切りを、全て知っている事が前提になります。だったら、その文字数もIntegerなんかで文字列の直前に、バイナリ・ファイルに書いとけばいいと思いませんか?。  VB6にも、指定文字数分だけ、バイナリ・ファイルから文字列を読み出す関数があります。こういうファイルを、自己格納型と言います。  Stringは可変長文字列ですし、今ではアスキー形式なのか、ユニコード形式での書き込みなのかの違いすらあります。にも関わらず、文字数を指定しただけで、バイナリ・ファイルから文字列を正確に読み出せる関数が存在するという事は、アスキー形式であるか、ユニコード形式であるかも、Stringを Put した場合、自動で文字列の直前に書いてあるんですよ。この発想を利用しましょう。  ちなみに、Put のヘルプの後半が読んでみて下さい。自己格納型の感覚が、なんとなくでもわかります。

obone
質問者

お礼

ありがとうございました。 参考になりました。 ただ私の説明不足でした。 バイナリファイルの出力はすべてすでに出力されたもしか存在しないので次回に生かしたいと思います。

関連するQ&A