- ベストアンサー
バイナリデータのファイル入出力について
- バイナリデータのファイル入出力には、Open文を使用してファイルを開き、Get文やLine Input文を使用してデータを読み込むことができます。
- No.1のプログラムでは、Open文の後にBinary Access Readを指定することでバイナリモードでファイルを開き、Get文を使用してデータを読み込みます。
- 一方、No.2のプログラムでは、Open文の後にInputを指定することでテキストモードでファイルを開き、Line Input文を使用してデータを読み込みます。Line Inputは改行文字を読み飛ばすため、読み込まれるデータに改行文字が含まれません。また、No.1ではデータの読み込みサイズを定義する必要がありますが、Line Inputにはサイズの指定はありません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
えー 逆に質問です。 「どこが同じ、なんです?」 「ファイルが読める」と言う以外に共通点なんか無いと思いますけど・・・ Binaryモード:入出力共用、テキスト・バイナリ両方 Inputモード:入力のみ、テキストのみ Getステートメント:指定された変数の型・サイズで決まるフォーマットを1つのデータとして読み込む Line Inputステートメント:改行文字までを1データとみなし、文字列データとして読み込む > たとえば、No.2のLine Inputでは改行文字は読み飛ばされますが、 「そういう機能しかない」からですね。 > No.1は改行文字も読み込みますよね。 「改行文字」だからと言って、特別扱いしませんから。 > また、No.1ではDim 変数 As String * 1と最後の* 1など文字の読み込み数を定義しておく必要がありますが、 データ型・サイズを指定しないと、「どれだけ読み込めばよいか」が決まりませんから。 > Line Inputに対応するものがないからでしょうか? 「改行文字」を探して、自分でサイズを決めますから。
その他の回答 (1)
- dsuekichi
- ベストアンサー率64% (171/265)
> No.1が最終的には強力な機能なのですね 「強力」というより「多機能」ですね。 その代わり「厳密な指定が必要(指定を間違うと予想外の動作になる)」ですが・・・ > No.1はバイナリモードで読むということですが バイナリモードだからと言って、テキストを扱えないわけではありません。 元のファイルがテキストで、それを文字列で読み込むなら、そのまま読み込めます。 但し、 > 変数がString型ならばASCII文字かUnicode文字に自動的に変換されてしまっているのでしょうか VBの内部処理コードはUNICODEですから、文字列で読み込めば、自動的にUNICODEになります。 #これは、Inputモードでも、Binaryモードでも同じです。
お礼
回答ありがとうございます。 ということは Dim 変数 As String * 1 よりも Dim 変数 As Byte と宣言した方が文字化けの問題等もなくなりより応用が利くといった感じでしょうか。
お礼
簡潔でわかりやすい回答ありがとうございます。No.1が最終的には強力な機能なのですね。No.1はバイナリモードで読むということですが、変数がString型ならばASCII文字かUnicode文字に自動的に変換されてしまっているのでしょうか?