• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プロパティの引数(バイト配列)でエラー)

プロパティの引数でエラー発生

このQ&Aのポイント
  • 実行するとVBが落ちてしまうソースコードがあります。原因を特定するために質問させていただきました。
  • Windows XP + SP2の環境でVisual Basic 6.0 + SP5を使用しています。
  • 特定のロジックで使用するバイト配列の引数をプロパティで設定するとエラーが発生します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>バイト配列 言わばメモリ参照 ByRef bytArray() As Byte をさらに ByRef bytArray() As Byte で渡しているので、メモリ参照のメモリ参照をやっているような気が・・・ ってかVBのバグっぽい気がします。 ByRef bytArray() As Byte はできるけど ByVal bytArray() As Byte はできない だから値を他の器にセットして渡したらいいと思う。 Private Property Let Array1(ByRef bytArray() As Byte)   Dim bytWk() As Byte   'Array2 = bytArray   '←原文   bytWk = bytArray    '←実質的メモリコピー   Array2 = bytWk     '←Array1のパラメータの(擬似)値渡し End Property もしくは全てVariant Private Property Let Array1(ByRef bytArray As Variant) End Property Private Property Let Array2(ByRef bytArray As Variant) End Property

tonytonychopper
質問者

お礼

やはりメモリ参照のメモリ参照だから・・・VBのバグってのも考えられますね。 これが妥当なところですかね。 たしかに変数に値をコピーしておいてそれを渡すと問題なく動作できました。実はこれに関しては確認済みでした。私が投稿した時点でそれも記入しておけばよかったです。お手数をかけてしまい申し訳ございません。

その他の回答 (2)

回答No.3

#1です >これが妥当なところですかね。 勝手な想像の域なので、確証はないです。 しかしAPIマニアのバイブル「バイト配列」ということもあり、癖がありそうですよね^^; >私が投稿した時点でそれも記入しておけばよかったです。 いえいえ、むしろ書かずして同じ所にたどり着いたのですから、ある程度方法が限られるのかな(?)と勝手に想像しております。 万が一「メモリ参照のメモリ参照」が違っていても、メモリリークを起こして落ちていることは間違いないと思います。 tonytonychopperさんのサンプルをやってみたら、「二度と見たくないメッセージボックス」が出現しましたしね^^;

tonytonychopper
質問者

お礼

>万が一「メモリ参照のメモリ参照」が違っていても >メモリリークを起こして落ちていることは間違いな >いと思います。 >tonytonychopperさんのサンプルをやってみたら、 >「二度と見たくないメッセージボックス」が出現しま >したしね^^; 「二度と見たくないメッセージボックス」ですからメモリリークは間違いないですね。 あのメッセージボックスを私もそう呼びたいと思います。かなり気に入ってしまいました(笑) ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

全体が見えないのでわからないけど Array2が定義されていないことはないよね。 Command1_Clickの中で確保されているbytArrayの参照をArray2に設定しているのに、 Command1_Clickが終了した後(外で)Array2を参照しようとした? とか

関連するQ&A