VB6.0 Sp6 WindowsXP sp2です。
Byte配列の操作について、for文又はDo Loopを使用せず結合、抽出等可能なAPI等あればご教授お願いいたします。
例:Abyte(100) の後に Bbyte(50)を結合するとします
For i = 0 To UBound(Bbyte)
ReDim Preserve Abyte(UBound(Abyte) + 1)
Abyte(UBound(Abyte)) = Bbyte(i)
Next i
これを一行でAbtye=Abyte+Bbyteのように
Abyte(100)の配列中からAbyte(25)からAbyte(50)までを抽出するとします。
Dim Out() as Byte
Redim Out(0)
For i = 25 To 50
out(UBound(out)) = Abyte(i)
ReDim Preserve out(UBound(out) + 1)
Next i
これを out=MidB(Abyte,25,25)のように抽出する方法
よろしくお願いいたします。
.Type = adTypeBinary な ADODB.Streamオブジェクトでどうですか?
Positionプロパティ、Writeメソッド、Readメソッドを使えば、
結合も抽出も行えるかと。
魔界の仮面弁士さんありがとうございます。
早速やってみたいと思っておりますが・・・・
Win2000での動作確認ができないのでご教授お願いいたします。
ADODB.StreammオブジェクトはWin2000上でも動作するのでしょうか
よろしくお願いいたします。
> ADODB.StreammオブジェクトはWin2000上でも動作するのでしょうか
ADODB.Stream オブジェクトは、MDAC 2.5 以上が
インストールされた環境であれば動作します。
MDAC は、Office や IE 等、いろいろなソフトによってインストール
される可能性があるものですが、とりあえず Win2000 と VB6 に
限定して言えば、下記のような配布状況になっています。
# 詳細は、Microsoft のサイトをご覧ください。
--------
Windows 2000 には、MDAC 2.5(の初期リリース)が含まれています。
Win2000 の SP1 には、MDAC 2.5 の SP1 リリースが含まれています。
Win2000 の SP2 には、MDAC 2.5 の SP2 リリースが含まれています。
(Win2000 の SP3 以降については調べていません……)
VB6/SP3 に含まれているのは、MDAC 2.1 の SP1a リリースです。
VB6/SP4 には、MDAC 2.5(の初期リリース)が含まれています。
VB6/SP5 には、MDAC 2.6(の初期リリース)が含まれています。
VB6/SP6 には、MDAC は含まれていません。
# SP6 に含まれなくなったのは、システム関連のアップデートが、
# Windows Update による配布へと移管されたためです。
ありがとうございます。
ADODB.Streamで結合、抽出ができるようになりました。
もう一件、ご教授お願いいたします。
Byte配列の検索について、例えば
Abyte(100)からBbyte(2)(0:&h2A,1:&hFB,2:&h05)が合致する
先頭配列番号を取得したい場合、今まではFor又はdo Loopで1byteづつ
検索していたのですが、他に良い方法があればお願いいたします。
ADODB.streamを見ましたが、それらしきプロパティがありませんでした。
> Byte配列の検索について、
まずは、InStrB 関数を試してみるとか。
それで問題があるようならば、
http://www7.big.or.jp/~pinball/discus/vb/60542.html
の結果に対して InStr するとか。
魔界の仮面弁士さん
InStrBを以前使用したとき、期待した結果を得ることができませんでしたが
今回、もう一度使用してみたら旨くいきました。以前はCompareMethodの設定が間違っていたのかもしれません。
CreateObject("Microsoft.XMLDOM")も勉強してみます。
いろいろありがとうございました。
今後もよろしくお願いいたします。
ツイート | ![]() |