(D6 パーソナル+XP)
Form1にTimer1,Timer2を設置してグラフィックを連続的に描かせるソフトを作っています。今までは問題なく動いていたのですがスプラッシュ画面としてForm2を加えたりして色々改造し、ソフト本体は思ったとおりの動きをしていましたが終了しようとしたら
「デバッガ例外が発生」 「プロジェクトABC.exeがEAっせssViolationクラスの例外を生成しました。モジュール'ABC.ece'のアドレス00405d4cでアドレスFFFFFFF7に対する書き込み違反がおきました」というメッセージが出て止まるようになりました。
終了コードは単に「Close;」とだけ書いていましたが対策としてTimerの動きをTimer1.enabled:=falseなどと一度止めてからCloseするようにしたりして試しましたが同じエラーが出てしまいます。この問題の原因、解決法などの手がかり、ヒントなどをお教えください。
どこかのメモリ領域をぶち壊しに行ってる雰囲気です。ポインタがらみで怪しいところはありませんか? 書き込みエラーですから、何かを変なところに代入しようとしているのかも知れません。デバッガで1行づつ実行させてみれば、エラー箇所が特定出来ると思います。
終了後にTimerのコールバックが発生してるとか
ご回答ありがとうございます。今日一日あれやこれや試していましたが力不足でどうにも解決できませんでした。
>>どこかのメモリ領域をぶち壊しに行ってる雰囲気です。ポインタがらみで怪しいところはありませんか? デバッガで1行づつ実行させてみれば、エラー箇所が特定出来ると思います。
そのような感じがするのでステップ実行したいのですがここでは「Close;」だけですのでステップ実行をどうやるのかアドバイスをお願いします。
>>終了後にTimerのコールバックが発生してるとか
Timerのコールバックというものはどのような現象でしょうか。Timerで発生したイベント実行中にCloseの割り込みが発生しておかしな動きをしてしまっているのか? などと分からないながら考えましたが、この場合はどうしたらよいかアドバイスをお願いします。
先ほどTimerを止めてから間をおいてCloseするテストをしてみましたが成功しませんでした。
>>ポインタがらみで怪しいところはありませんか?
DELPHIをはじめて間もない者ですのでポインタの知識がありません。この問題以外はどうやら動いている7000ライン以上の僕としては力作のソフトですので何とか問題を解決していきたいと思います。 どうぞよろしくご指導ください。
Form2を加えたりして色々改造し、、、でおかしくなったのかい?
その内容を伝えないと他人に真相は分からないかもね。
close;を呼ばないで、Formの×ボタン押して閉じるのは出来るのかい?
どうしてもダメならソースをどこかにupすれば
親切な暇人さんが見てくれるよ。
ツイート | ![]() |