掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
動的フレームの再作成でエラー (ID:22563)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Frame・えーと・うらない・オケ・とんこつ・しょうゆ・先入れ先出し・メス・オスさん、こんにちは しょうゆさん、先入れ先出しさん >私の認識では、PostMessageはキュー(スレッド毎)に貯めた順番に実行され、 >SendMessageは先入れ先出し(FIFO)で実行されます。 すみなせん。FIFOはPostMessageですね。 日本語の意味はあっていますよね? すみません。サンプルも説明が間違っていました。 >この時、VCLがPostMessageを発行しているので 「この時、VCLがPostMessageを受信しているので」 です。 (誤字・間違いが多くてすみません、だから分かってもらえない?) うらないさん、具体的な指摘ありがとうございます。 具体的なので反論しやすい、うらないさんに 反論させてもらいます。m(__)m うらないさんの考え方には、3つの間違いがあります。 ヒントを書くので自分で考えて下さい。 間違い1:ヒント うらないさんの考えでは、全てのボタンコンポーネントでもエラーになりますよね ここではTToolBarを使っていますが、これをTButtonに変えたらどうなりますか? (TToolBarは、削除して下さい) 間違い2:ヒント(と言うより答えですが理由を考えて下さい) >TForm2.ToolButton1Click(Sender: TObject);において、FormFreeの次の行・・・ >まぁ、End; しかありませんが・・・に戻りますが、FreeAndNilで、メモリが破棄されている。 >存在がなくなったところに戻ってアクセス違反。 procedure TForm2.Button1Click(Sender: TObject); begin FormFree(); Form1.Caption := 'TEST'; end; 間違い1で修正したプログラムにFormFree()の後の処理を 追加して下さい。FreeAndNilが実行された後の処理は 実行されませんか? Form2は廃棄されましたがメソッドは生きています。 この理由は、Delphiの内部構造を理解していないと 分からない事なので、分からなくても大丈夫だと思いますが 勉強の為に考えて下さい。 間違い3:ヒント 秘密です。これは自分で考えて下さい。 私が認識しているのが3つと言うだけで もっとあるかもしれません。 がんばって下さい。 「間違い1」が分かってもらえれば、別フォームからのフォームFreeが 難しいのが分かってもらえると思いますが... 具体的に説明しても、皆さんが自分の考えを変える つもりは、ないみたいなので止めます。 でも、なんでFreeにこだわるですか? いままで、自分が書いたプログラムが バグだと思うのがいやなんでしょうか? Releaseも問題は若干ありますが、Freeより 安全だとおもいます。 (実話は私も直接Releaseを使いません(Freeも使いません) もっと安全な方法でやっていますが(~_~;)) スレが荒れたので、これで本当に最後にしますが 回答は優秀な人?が多いようなので、まかせます。 (皆さんが言われる通り、ソースを読めば分かりますが 読む人のスキルで...皆さんもがんばって下さい)
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.