[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/07/05(Thu) 13:30
投稿者名:HK
Eメール:
URL :
タイトル:
ADODB.StreamをEXEにすると動作しない・・・

ADODB.Stream をVB6で使用してます、このプログラムをEXEにコンパイルして実行すると
正しく動作しなくなります、参照設定も ADOの2.5以上ということなので
2.5以上のもの色々試してみたのですが上手く動きません・・・
VBのデバッグ環境では正しく動作しているのですが、行っていることは

ソケットでバイナリーを送受信して、バイト配列の中から任意のバイト数を
取り出すのに、ADODB.Stream を使っています
    Dim BinaryBuffer As ADODB.Stream
    Set BinaryBuffer = New ADODB.Stream

    BinaryBuffer.Type = adTypeBinary
    BinaryBuffer.Open

    BinaryBuffer.Write b受信Dat

    BinaryBuffer.Position = 0
    Result = BinaryBuffer.Read(4)

こんな感じで受信したデータから4バイトを取り出す時などに使ってます
送信フォーマットによって取り出す位置は変わるので、ADODB.Stream が位置とサイズを
指定して取り出せるので便利で使っているのですが・・・

EXEファイルにする際なにか注意する点があるのでしょうか
どなたか教えてくださいお願いします。

投稿時間:2007/07/06(Fri) 00:51
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
質問は具体的に
> EXEにコンパイルして実行すると正しく動作しなくなります
「正しく動作しない」とは、どういう状況ですか?

エラーが出るなら、正確なエラーを転記してください。
期待動作しないのであれば、どのような動作を期待していて、
どのような結果になってしまうのかを書いてください。

> 2.5以上のもの色々試してみたのですが上手く動きません・・・
実行環境にインストールされている MDAC のバージョンは幾つですか?

> ソケットでバイナリーを送受信して、バイト配列の中から任意のバイト数を
Stream 側ではなく、ソケット側の処理に問題がある可能性はありませんか?

投稿時間:2007/07/06(Fri) 10:48
投稿者名:HK
Eメール:
URL :
タイトル:
自己解決しました・・・
> > EXEにコンパイルして実行すると正しく動作しなくなります
> 「正しく動作しない」とは、どういう状況ですか?

 実行時とデバッグ時で、受信内容の表示に違いがでていました
すぐに、MDAC を疑ってしまったのが間違いでした。

> > ソケットでバイナリーを送受信して、バイト配列の中から任意のバイト数を
> Stream 側ではなく、ソケット側の処理に問題がある可能性はありませんか?

 ソケットに送る前に問題がありました、状況を整理したら原因が解りました
幾つかの構造体をソケットで送るために、バイト配列にコピーしてそれを ADODB.Streem 
を使ってバイト配列を結合して、ソケットで送信をして、受け側で、ADODB.Streem 
で必用な場所を取り出して通信内容を表示してました。

この構造体からバイト配列へのコピーに RtlMoveMemory をつかっていたのですが
構造体をコピーするときに、ByVal を構造体の前につけてバイト配列にコピーしていました
デバッグ時はByValをつけても正しく動いていましたが、EXEにしたら
ここで正しくコピーされていませんでした・・

書く前に状況を整理するべきでした、すいません