ACCES_VIOLATIONというエラーを消すには?


AS  2014-04-06 20:23:47  No: 46193

メインプログラムに、自作のメモ帳のようなプログラムを組み込んだら、メインプログラムを終了する時に「c0000005ACCES_VIOLATION」というエラー表示が出るようになりました。

数年前にXE2で出たこのエラーについて、この掲示板でプロジェクトのオプションでの対処法を教えて頂き、エラーは出なくなりました。

当時は、XE2でブレークしても問題の個所に飛んでいかなかったのですが、XE5で問題の個所がわかりました。
richedit1.width:=Form.width-10;
これを消すと、終了時のエラー表示は出なくなります。
これは必須の機能ですから削除するわけにはいきません。

どうしたらいいのでしょうか??
分かる人がいれば、よろしくお願いします。


けど  2014-04-07 02:44:17  No: 46194

>この掲示板でプロジェクトのオプションでの対処法を教えて頂き
せめてその記事の url か
richedit1.width:=Form.width-10;
をどのイベントで或いはどんなタイミングで呼び出しているのかとか書いていただかないと
これだけの情報では何も答えられないです
「AS XE2 richedit」とかでサイト内検索もしましたが途中でアホらしくなってやめました


AS  2014-04-07 09:47:57  No: 46195

メインのformからサブのform1を呼び出し、そのサブのform1から呼び出したform2がメモ帳のようなものなんですが、その中で、次のように使ってます。

procedure TForm2.OnResized(Sender: TObject);
begin
  RichEdit1.Width := Form2.ClientWidth-10;   
  RichEdit1.Height:= Form2.ClientHeight-10;  
end;

この2行がエラーになり、消せばエラー表示は出ません。
メインのFormを終了させるときに、エラー表示が出ます。

当時は急いでいたのでどうしたらエラーが出なくなるかと質問して、対処法を教えてもらったのですが、別の人が原因はわかるはずだとか
書かれていて、気になっていたものですから、XE5になって質問させてもらいました。

よろしくお願いします。


igy  2014-04-07 19:44:58  No: 46196

オブジェクトインスペクタで、FormのOnResizeイベントのところで、ダブルクリックすると、
procedure TForm2.FormResize(Sender: TObject);
のように生成されますが、

>procedure TForm2.OnResized(Sender: TObject);

これは、Form2のResizeイベントに割り当てられているものですか?

また、コード上で
   OnResized(Self);
のように、実行されたりしますか?


tor  2014-04-07 19:55:13  No: 46197

そのヤニイはフォームの自動作成の対象になっているのでしょうか?
「そのサブのアから呼び出した」という使い方からすると、そうではなくて毎回動的に作成しているのだと思いますが
そうだとしたらニイという変数には有効なインスタンスは入っていません。

いずれにしてもこの場合、ヤニイは自分自身でしょうからわざわざニイと付ける必要はありません。
ヲサヲサメナアョラヲサコスヲサテラュアーサ
としたらどうですか?ヲサ「自分自身のプロパティ」ということを明示するために何か付けないと不安だというなら、
ヲサヲサメナアョラヲサコスヲサモョテラュアーサ
のようにモを使えばいいです。
スススススススススススススススススススススススススススススススススススススススス
ニコ チモ
トコ イーアエッーエッーキィ月ゥ アカコウエコエエ  書込者ノト:ロ ァ 。「。 ン
モコ 

ありがとうございました。

ニイを消したらエラー表示でなくなりました。
アー年以上前のトナエで作ったメモ帳だと思いますので、
なぜ入ったのかわかりません。
単独で使っている分にはエラー表示でませんが、
組み込んだら問題になるのですね。

実は、最近同じように長年単独で使っていた別のプログラムを組み込んだら、
一度それを終了してもう一度使おうとすると正常に働かないという現象が起
こりました。
ナニをにして終了すると、もう一度入るとそのナニのが残って
いて正常に働かないのです。
マチにナニコス;を入れると正常に機能するようになりました。

したらそので宣言されたすべての変数は廃棄されるのではないのですか??
スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアエッーエッーキィ月ゥ アキコイキコオウ  書込者ノト:ロ ァ。   ン

新たな質問は別のスレッドを起こした方が良いかと思います。

メソッドについては、メインフォームとそれ以外のフォームで違います。
メインフォームのメソッドはまあ、アプリケーションが終了しますので全て破棄されます。

普通のフォームの場合、マテイベントでにニが指定されていないなら、デスクトップから消えるだけでオブジェクトはメモリ上に残ります。
なので、再度表示する場合メソッドを呼び出せば表示されます。
破棄する場合は、明示的にニを呼ぶ必要があります。(マでニを指定した場合はエラーになるのでアクセスしてはいけません)
スススススススススススススススススススススススススススススススススススススススス
ニコ チモ
トコ イーアエッーエッークィ火ゥ ーーコーーコオウ  書込者ノト:ロ ァ 。「。 ン

ありがとうございました。

調べてみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加