VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2004/02/24(Tue) 02:51
投稿者おじん
URL
タイトルバイナリデータの読み書き

サンプルのその2の読み方について、不可解なことが起こりました。一部を掲載します。
>    'ファイルをシーケンシャル入力モードで開く
>    Open strFileName For Input As #intFileNo
>    'バイナリデータとして読込んでUnicodeに変換して表示
>    Text1.Text = StrConv(InputB$(LOF(intFileNo), intFileNo), vbUnicode)
>'    buffer = StrConv(InputB$(LOF(intFileNo), intFileNo), vbUnicode)
>    Close #intFileNo
不思議1:
ファイルの末尾に16進で1Aの文字があると(偶然見つけた)、
「ファイルにこれ以上のデータがありません」というエラーがでる。
不思議2:
上記でコメント行を生かし、その上の行にコメントをいれ、
>'テキストファイルをバイナリモードで書込み
>    Dim testFile$
>    testFile = "f:\test99.txt"
>    intFileNo = FreeFile
>    'ファイルをバイナリモードで開く
>    Open testFile For Binary Access Write As #intFileNo
>        'テキストファイルを丸ごと書込み
>        Put #intFileNo, , buffer 'Text1.Text
>    Close #intFileNo
で書き込むと、ファイルの最初に、16進で、0800 0701 xxxx xxxx〜
(実際には空白はありません。最初の4バイト)
という、どこから来たのか理解できない文字が入ります。なお、0800は
どんな入力ファイルでもこの値になりますが、0701は不定です。そして、
xxxx以降のデータは正規の内容です。読み込んだ直後で、
MsgBox Hex(Asc(Left(buffer,1)))で見ると、正規のデータが表示され
0800(および0701)の値はどこへ行ったのやら見えません。
また、コメントした、Text1(or dim temp$)などを経由するとこの現象は
発生しません。
なお、その1の読み方ではこれらの現象は全く発生しませんでした。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -