ページ 11

原因がよく分からないアクセス違反

Posted: 2007年7月25日(水) 02:23
by mit
初めまして、最近ActiveBasicを始めた初心者です。
表題の件につきまして、知恵をお貸し頂けませんでしょうか。

Win32プログラミング講座にあるテキストエディタを作ってみたのですが、
ファイルオープンダイアログを2~4回開くとアクセス違反で終了してしまいます。
コンパイル時にエラー、警告は出ていません。
リリースコンパイルを行った場合でも、同様に2~4回開くと落ちました。
また、サンプルプロジェクトのテキストエディタでも同様の現象が起こりました。

過去ログで報告のありましたComputer Browser, Server, Workstationについては開始させ、
"GetOpenFileNameでエラーが出る方へ(XPで)"のトピックに従ってOPENFILENAME構造体も書き換えましたが
状況は変わりませんでした。

何とか解決する方法はありませんでしょうか。
よろしくお願いします。

WinXP Home SP2
ActiveBasic 4.24.00

Posted: 2007年7月25日(水) 04:02
by konisi
その、ファイルオープンの部分も含めて、もしよければ問題の関数丸ごと掲載できませんか?

BytePtr型で操作する部分でString型で適当に対処すると、コードによってはアクセス違反を起こすことがあります。

Posted: 2007年7月25日(水) 12:01
by mit
これが問題のコードです。
汚くてすいませんが、よろしくお願いします。
ただ、付属サンプルのテキストエディタでも発生するので、
もしかしたら別の所にも問題があるのかもしれませんが……。

Posted: 2007年7月25日(水) 18:42
by konisi
すみませんが、こちらでは現象を再現できませんでした。
だれか現象を再現できる人はいますか?

AB4.24
WinXP Home SP2

Posted: 2007年7月26日(木) 04:34
by ゲスト
メモリ確保の後こうしてみるとか
pszFileName[0]=0

構造体初期化の
FillMemoryを消してみるとか

CreateFile(ofn.lpstrFileをpszFileNameにしてみるとか

Posted: 2007年7月26日(木) 12:04
by mit
>konisi様
わざわざすいません
どうやら私の方の環境が原因のようですね……。

>ゲスト様
ありがとうございます
ただ、全て試してみたものの変化はありませんでした。


ファイルオープンダイアログを延々開くだけのプログラムを実行して詳しく調べてみたところ、
・ 何も選択せずキャンセルだけ選べば問題なし
・ 何かを選択した後に(開かずに)キャンセルを選んだ場合では何度目かでアクセス違反が発生
という事が分かりました。
それが分かったところで、どうすればいいのかはさっぱり分かりませんけど……。