VB6 Open For Random Len=したファイルからGETするときのバッファ
仕事でVB6。固定長レコードのファイルをランダムに読み取るコードを実装していたんだけど困ったことが。
Dim fh As Long Dim Data As String Dim RecPosition As Long fh=Freefile(0) Open "hogefuga.txt" For Random As #fh Len = 202 '200Byte + CRLF RecPosition = 1 Get #fh,RecPosition,Data Debug.Print Data
こんなコードを動かすと、なんとGet文が実行時エラー。エラーコード59で、レコード長がちがいますとかいわれます;; レコード長はOpenで固定長202バイトだって宣言してるのに!
Dataの宣言を次のように直すと動くんだコレが。
Dim Data As String * 202
でも、この202が変わりうるプログラムを作っているので激しく困惑。
Dim DataLen As Integer DataLen = 202 Dim Data As String * DataLen
これは構文エラー;; MSDNによるとDimは文だから実行時に解決できそうなもんなんだけど、コンパイル時に解決しようとする。んもう、不便だなあ。
ま、いまどきVB6を使うな、ということかな。やむなしで、1Byteずつ読み取って1レコード文の長さになるまで読み取りバッファにデータをくっつけていくループを記述。
バカみたいだ。
…いや、ちがう。
バカだ。orz