DOBON.NET DOBON.NETプログラミング掲示板過去ログ

バイナリデータの配列格納

環境/言語:[Win 2000 Pro VB6.0]
分類:[VB6以前]

いつもお世話になります。

今回はバイナリのデータが格納されたファイルからバイナリデータを
取得してそのデータを配列に格納したいのですがどうもうまくいきません。

実施したこと。

Open "C:\Documents and Settings\oec1262\デスクトップ\tthaid99_t" For Binary As #1
Do While MyLocation < LOF(1)

ReDim Preserve aa(i)
aa(i) = InputB(1, #1) MyLocation = Loc(1) i = i + 1
Close #1

最初上記のように記述し dim aa() as byte としていたのですが
エラーとなってしまい、ヘルプやインターネットで調べたところ
INPUTは文字型でデータを返すとあったので dim aa() as string
としたところ、エラーはでなくなったのですが、配列の中身が文字
となってしまいます。(文字化けした状態で格納されている)

バイトの配列に1バイトづつセットするやり方がどうもみつ
かりません。 わかる方がおられましたら宜しくお願いします。
> 最初上記のように記述し dim aa() as byte としていたのですが
> エラーとなってしまい、ヘルプやインターネットで調べたところ
> INPUTは文字型でデータを返すとあったので dim aa() as string
> としたところ、エラーはでなくなったのですが、配列の中身が文字
> となってしまいます。(文字化けした状態で格納されている)

Get,Putステートメントを調べてみてください。
2005/12/13(Tue) 19:26:52 編集(投稿者)

> 今回はバイナリのデータが格納されたファイルからバイナリデータを
> 取得してそのデータを配列に格納したいのですがどうもうまくいきません。

Dim aa() As Byte
With New ADODB.Stream
  .Type = adTypeBinary
  .Open
  .LoadFromFile "C:\〜〜"

  aa = .Read(adReadAll)

  .Close
End With
早速のお返事ありがとうございます。

GETステートメントの方を調べ

Dim aa() As Byte

Open "C:\Documents and Settings\oec1262\デスクトップ\tthaid99_t" For Binary As #1
Get #1, 1, aa()
Close #1

のように記述したのですがどうやらaa()には値がはいっていないような
GETステートメントを使用した場合
aa(0) → &HFF aa(1) → &HAB aa(1) → &HAC
のようにデータが格納されるのでしょうか?

引き続きGETステートメントについて調べてみよう
と思います。

魔界の仮面弁士さんお返事ありがとうございます。

魔界さんのコメント見る前にコメントしてしまいました
とりあえず教えてもらったとおりやってみます。
> Get #1, 1, aa()
何バイト分読み込むのかを決めるために、事前に aa に対して
ReDim ステートメントを実行しておく必要があります。


> 魔界さんのコメント見る前にコメントしてしまいました
その略し方は勘弁してもらいたかったり。
http://yaplog.jp/orator/archive/20
とりあえず教えてもらったとおりのコードで
実行したのですが、

>With New ADODB.Stream

の部分でエラーとなってしまいます。
※ユーザー定義型は定義されていません。(メッセージ)

ちなみにライブラリは
Microsoft ActiveX Data Objects 2.0 Library
を参照の設定には設定したのですが・・・

こちらの環境がわるいのでしょうか?
わかればよろしくお願いします。
> ちなみにライブラリは
> Microsoft ActiveX Data Objects 2.0 Library
> を参照の設定には設定したのですが・・・

2.5以上が必要です。
またまたお返事ありがとうございます。

redimをしたところちゃんとバイナリで配列に格納
できました。 本当にありがとうございます。 感謝感謝です。

> その略し方は勘弁してもらいたかったり。

大変失礼しました。 これからは"魔界の仮面弁士"さん
と呼ばせてもらいます。(ちなみに由来とかが気になりますが)

ありがとうございました。
魔界の仮面弁士さん

バージョンを上げたらうまくいきました。
本当にありがとうございました。
ではでは
■No14212に返信(こうさんの記事)
> 魔界の仮面弁士さん
>
> バージョンを上げたらうまくいきました。
> 本当にありがとうございました。
> ではでは
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板