TLoginForm.Button1Click(Sender: TObject);
begin
//
//省略(ID・Pass参照後、別のフォームのVisible:=Trueにしている。)
//
LoginForm.Destroy;
end;
このプログラムなのですが、ボタンをマウスでクリックして呼び出すと、
「EXE名 のアドレス 0040315 でアドレス 0000000E に対する読み込み違反がおきました。」
のエラーメッセージが出てしまいます。
ボタン上でEnterにてイベント発生の際には、この不具合はありません。
「LoginForm.Destroy;」を削除すれば、この不具合は出ないのですが、なぜこのような現象がおきるのか?
そもそも、「ボタンをマウスでクリック」と「ボタン上でEnter」との違いはなにか?
まだ駆け出しなので、わからないことだらけです・・・
よろしくお願いしますm(_ _)m
LoginForm.Release;
でもエラーになりますか?
クリックとEnterの違いと言えば、メッセージの飛ぶ順序くらいだと思いますが。
Destory は、直接使うなってHelpに書いてなかったっけ?
にしのさんのレスのように、 Release を使うか、または Free を使う。
今回のような場合、自身のイベント処理中に自殺(Free)しちゃだめ。
Release を使って、やることやって(イベントをぬけてすっきりして)からお亡くなりにならないといけません。
にしのさん、つかさん、回答ありがとうございました。
LoginForm.Release;では問題ありませんでした。
原因はともかく、自殺しないようにすることで、対処と致しました。
ツイート | ![]() |