データのなかにX'00'があるファイルを読込むには?

解決


TSUBASYU  2004-07-05 11:15:31  No: 114508  IP: [192.*.*.*]

データのなかにX'00'があるファイルを下記のような読み方をしました。

'ファイルOPEN
Open fname For Input As #1

RECCNT = 0
    
Do While Not EOF(1)

   '1レコード読み込み
   Line Input #1, recBuf
      
   RECCNT = RECCNT + 1       

   '読込んだデータの加工処理
   XXXXXXXXXXXXXXXXXXXXXXX
       
Loop

'ファイルCLOSE
Close #1

結果は、X'00'があるバイト数分、サイズが小さく読込まれます。
また、2レコード分が1度に読込まれたりします。
対策方法をおわかりの方、宜しくお願いいたします。

編集 削除
Max  2004-07-05 20:45:56  No: 114509  IP: [192.*.*.*]

recBufってString型の変数?

編集 削除
TSUBASYU  2004-07-06 09:46:40  No: 114510  IP: [192.*.*.*]

そうです。
これが原因なのでしょうか?
Stringで定義せずに何で定義すれば良いのでしょうか?

宜しくお願いします。

編集 削除
Max  2004-07-06 12:17:24  No: 114511  IP: [192.*.*.*]

WinXP, VB6(sp6)の環境では勝手にコード値0の文字は切り詰められて
読み込まれ、質問のような現象はでませんでした。

バージョンの違いによるものでしょうか?
ところでX'00'ってChr$(0)の文字ってことですよね?

編集 削除
TSUBASYU  2004-07-06 12:52:16  No: 114512  IP: [192.*.*.*]

Maxさん、ありがとうございます。

X'00'(16進)は、Chr$(0)の文字のことです。(Null値?)

勝手にコード値0の文字は切り詰められて読み込まれるということは、
chr$(0)分、サイズが小さくなるということですよね?

編集 削除
Max  2004-07-06 15:23:04  No: 114513  IP: [192.*.*.*]

そういう意味でしたか。
それならテキストモードで開いたときの仕様みたいなので
テキストモードで開いたときはChr$(0)は読むことはできないです。
Chr$(0)を読む必要があるならバイナリーモードで開いてください。

Chr$(0)が必要ということは、元のデータはテキストベースのデータ
じゃないということですよね?

編集 削除
TSUBASYU  2004-07-07 09:45:41  No: 114514  IP: [192.*.*.*]

Maxさん、ありがとうございました。

バイナリーモードでうまく行きました。

編集 削除