掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ユニット分割について (ID:149984)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
OnClickイベントなどのイベントハンドラは概念的にはいわゆる関数ポインタですが、単純なポインタではなく、インスタンスとメソッドの2つのポインタの組み合わせで、公式ではメソッドポインタと呼んでいます(単純な関数ポインタを公式では手続きポインタと呼んでいます) https://docwiki.embarcadero.com/RADStudio/ja/%E6%89%8B%E7%B6%9A%E3%81%8D%E5%9E%8B#.E3.83.A1.E3.82.BD.E3.83.83.E3.83.89_.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF type TFoo = class(...) procedure Bar(...); end; proedure Baz(...); Barへのポインタは type procedure (...) of object; // of objectがあるのでメソッドポインタ ですが、Bazへのポインタは type procedure (...); // of objectがないので手続きポインタ と、パラメータが同一でも"型が違う"ということになります。 # BarにはSelf(TFooのインスタンス)が存在しているからですね。 解決策はKONNOYAさんが書いているようにTMethodレコード型経由でインスタンスとメソッドの2つのポインタを組み合わせたうえでOnClickに代入する、ということになります。 ところで質問するときは > エラーになってしまい ではなく、コンパイルエラーなのか実行時エラーなのか、どの行で発生しているのか、またエラーメッセージはどのようなものなのかを(メッセージは書き写すのではなくコピペで)書いたほうが適切な回答が得られます(エスパー不要になるので)。 またユニット分割の目的は何でしょう?そのへんも考えながらいろいろ試すといいと思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.