• 締切済み

VisualBasic6.0 バイナリでの読み書き

VisualBasic6.0(AccessVBA)でバイナリ形式(EBICDIC)のファイルを読み書きしようとしています。 その際に以下の問題が発生してしまい原因が分からずに悩んでおります。 ■問題  ファイルの読み込みはファイルのサイズ(バイト数)分を一気に読込ます。  その後、VB側で1レコード(128バイト)単位に分割してファイル出力(PUT)しています。  このPUTを行うと、ファイルの先頭4バイトに(08001200)と出力されてしまいます。  この4バイトが出力される原因が分からず悩んでおります。 どなたかご存知の方がいらっしゃいましたらご回答いただけると助かります。 参考にバイナリエディタのキャプチャを添付いたします。 以上です。

みんなの回答

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.2

バイナリ形式の読み書きにEBICDICも何もありませんが その4バイト以降は正常なデータなのでしょうか? ・それ以後のデータは正常なのか異常データどっち? ・データが正常だとして(多分こっちだと思うが)4バイト+124バイトの形で出力されるのか  4バイト+128バイトの形で出力されるのかどっち? どこかで間違ったコード書いてるんでしょうが ソースコードの記載がないので判断することができません

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

出力のコードを提示したほうがいいと思いますよ 文字列として putに渡したりしていませんか? Byte配列として渡してやればいいかも … Dim rBuf() as Byte dim wBuf(127) as Byte ReDim rBuf(1023) Open "Test.bin" for Binary Access read as #1 get #1,,rBuf Close Open "TestW.bin" for Binary Access Write as #1   for n=0 to 127     wBuf(n) = rBuf(n)   next   put #1,,wBuf Close といった具合で …

関連するQ&A

  • バイナリ形式のXMLファイルを読み書きしたいです

    Denemoというソフトが出力した .denemo ファイルを読み書きしたいのです。 .denemo ファイルは MusicXML という形式のようなのですが、バイナリファイルなのでどのように扱えば良いのかわからず質問しました。 XML parser というものが関係あるようなのですが、よくわかりません。 まずは、バイナリ形式のXMLをテキスト形式で読みたい。 次に、バイナリ形式のXMLをプログラム(C++)で操作して読み書きしたい。 と、思っています。 OS は Windows XP で、コンパイラは g++ を使用しています。 よろしくお願いいたします_(_ _)_

  • バイナリーファイル読み書き

    現在あるクラスパスの通っているディレクトリーから バイナリーファイルを読み込み、書き込みを行おうとしております。 指定はフルパス形式ではなく、/sample/data/data.txt の様な形式で行います。 読み込みはFileInputStream、書き込みはFileOutputStreamにて 行います。通常のフルパス指定での読み書きを行える事は既に 確認済なのですが、上記の様な形式を読み込もうとするとエラーになります。 そこで、getResourceにより、ファイルを探索させて、得られたURLオブジェクトを 使用して読み書きを行いたいと思っておりますが、 どうしても、URLからFileOutputStreamあるいはFileInputStreamまでつながりません。 例えば、URLからURIに変換出来れば、その後FileクラスをURIから生成して、 FileOuputStream or FileInputStreamを生成する事が出来るのですが。。。 この例以外の方法でも構いません。よろしくお願いします。

  • VBによる可変長ファイルの読み書き

    VB5で固定長、可変長の2種類のファイルを読み込み、編集して、またファイルに書き込むという処理を作成します。 固定長は、構造体にしてランダムアクセスによって、一気に読み書きしています。 問題は可変長のときどのようにファイルアクセスをし、読み書きするのがいいのかよくわかりません。 ファイルデータのフォーマットは 項目   属性  データ長 6バイト データ  可変 データ長 6バイト データ2 可変 ・ ・ ・ といくつか可変長のデータが並びます。 バイナリーでアクセスし、1つ1つ区切りながら読み込むしかないのですか? よろしくお願いします。

  • バイナリ

    VB6.0を使っています。 全てのファイル(Word、エクセル、Exe、Txtなどなんでも)はバイナリファイルとして扱えるのですか? バイナリファイルとして読み込んで、別名で保存して、 また、元の形式に戻すにはどのようにしたらよいのでしょうか? バイナリモードでOpenして 1バイトずつ、 バイナリモードで書き込めばいいのでしょうか? また、読む場合は、 バイナリモードで開いて、 1文字ずつ 何モードで書き込めばいいのでしょう? バイナリでいいのですか? ファイルの形式などよくわかっていません。。。。

  • VB(VBA)で、バイナリデータを使ってテキストファイルを作成したいの

    VB(VBA)で、バイナリデータを使ってテキストファイルを作成したいのですが、 例えば、"A"が一文字のみのShift-JIS もしくはunicodeのテキストファイルを作るため、 (下記の確認はShift-jis で行っています。) Dim ByteData As Byte ByteData = AscW("A") Open "C:\A.txt" For Binary Access Write As #1 Put #1, 1, ByteData Close #1 としました。 できあがったファイルをバイナリエディタで確認すると、  41 となっています。 (Unicode は 41 00 2バイト文字でリトルエンディアンのため) この41は、"A" の文字コード(Shift-JIS)「65」の16進表記です。 この「41」という値を使ってバイナリモードでテキストファイルを作成したいのですが、 どのようにすればよいでしょうか? 上記 Put #1, 1, ByteData の部分を、 1.Put #1, 1, 41 としたところ、通常表示はできないファイルができあがったみたいです。 バイナリモードで 「29 00 20 20」でした。 文字コード00 に該当する文字がないためだと思います。 2.Put #1, 1, "41" としたところ、「41 」(バイナリモードで 「34 31 20 20」) (41の後ろは半角空白) で×でした。 3.Put #1, 1, CLng("&H" & 41) としたところ、通常表示はできないファイルができあがったみたいです。 バイナリモードで 「41 00 00 00」でした。 4.ByteData = CLng("&H" & 41) Put #1, 1, ByteData これでやっとできました。 この他にも方法があるのか?と思い、質問させていただきました。 ご指導よろしくお願いいたします。

  • この方法でバイナリデータが読めるのでしょうか

    あるプログラムでバイナリ出力しているファイルがあります。これを単純にfread()で読み込んで、今度はfprintf()で出力すればどうなりますか?やりたいことは、バイナリ出力されたファイルをテキストファイルに変換したいのですが、この方法で、バイナリファイルが読めるでしょうか? ちなみに、読みたいバイナリファイルは、fwrite()で書き出したファイルです。 あと、「バイナリファイルです」と言って貰ったファイルを、windowsのテキストエディタなどで開くと、appleなどの通常のアルファベットの単語と、あとは訳のわからないものが見えるのですが、これってバイナリファイルじゃないですよね?appleなどと書いてあるのですから。 間違えていましたら、訂正お願いします。

  • 数値 バイナリ 保存

    お世話になります。先日からUNICODE と バイナリ形式の保存にはまっています。 10進数 30を16進にすると1E ですが、手元に 1E 00 00 00 とバイナリエディタで 読めるファイルがあります。 このようなファイルを VB で作成するにはどうすれば良いでしょうか。 よろしくお願いいたします。      

    • ベストアンサー
    • Java
  • VBAを使って、一部バイナリデータを読み書き

    VBAを使って、一部バイナリデータを読み書きする方法 を教えてください。 あるファイルが1行目から30行目までが普通のASCII形式でデータが書き込まれており、 31行目以降はバイナリデータとなっています。 また、30行目にheader endと書かれています。 このデータを30行目までは文字列データとして抽出し、 31行目以降はバイナリデータとして抽出して、 少し内容を書き換えてから、最初と同様に 30行目までをASCII、31行目以降をバイナリデータとして出力したいのですが どのようにすれば良いですか? http://homepage2.nifty.com/kasayan/vba/binary.htm http://hanatyan.sakura.ne.jp/vbhlp/Binary.htm バイナリデータの読み込み方は上記のページに書かれてあるのですが いずれも、ファイルをまるごとバイナリ形式として読み込むもので 一部だけバイナリとして読み込むことはできないようです。 どなたかどうすれば良いか教えてください。

  • バイナリ出力

    バイナリのテストデータを作成しており、VBAで作成中です。 以下の内容で困っております。 「0~65525の値を2バイトの情報(VCでいうunsigned shortの型)としてバイナリファイルに出力する。」 変数long型で値を取得した場合、4バイトの情報としてバイナリ出力されてしまいます。これを2バイトの情報として出力する方法をご教授願えないでしょうか? よろしくお願いします。

  • 数値 バイナリ 保存で保存する方法

    お世話になります。先日からUNICODE と バイナリ形式の保存にはまっています。 10進数 30を16進にすると1E ですが、手元に 1E 00 00 00 とバイナリエディタで 読めるファイルがあります。 このようなファイルを VB で作成するにはどうすれば良いでしょうか。 よろしくお願いいたします。      

専門家に質問してみよう