掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TList.Sortのヘルプの意味がわかりません (ID:22344)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつもお力添えありがとうございます。 Delphi6Proを使っています。 List.Sortを実装したいと思い、Helpを参照しました。 ----- Sort 例 ----- 以下の例は、リスト内の各オブジェクトをそれぞれの名前のアルファベット順にソートします。これは、リストがコンポーネント参照のみを格納していることを前提としています。 CompareNames 関数は、リスト内のオブジェクトの比較を行います。ユーザーがボタンをクリックすると、リストがソートされます。 function CompareNames(Item1, Item2: Pointer): Integer; begin Result := CompareText((Item1 as TComponent).Name, (Item2 as TComponent).Name); end; procedure TForm1.Button1Click(Sender: TObject); begin List1.Sort(@CompareText); end; ----- 呼び出し方の部分は次のようになっています。 List1.Sort(@CompareText); これは、CompareText関数を引数として渡しているように思います。 たぶんSortメソッドの中でCompareTextを呼び出していると推察しました。 CompareTextはDelphiが準備した関数ですよね? そうすると、ユーザが定義している function CompareNames 関数はなぜ存在しているのか?とわからなくなってしまいました。 私がSortについて把握しているイメージを説明させていただきます。 a)List1はItemにTComponent型を保持している b)List1.Sort(MyFunc関数のポインタ); でソートを実行できる c)実際はふたつのItemを比較する際にMyFunc(Item1,Item2)が実行される d)引数は、Sortメソッドの中で自動的にセットされる(?)、 e)MyFuncの戻り値でふたつのItemの大小を判断し、 f)List1の中で並べ替えが行われる このように考えたので、b)では、自作関数(MyFunc)を引数にする気がしています。 たぶん、何か、根本的に誤解または理解できていない点があるように思います。 また、ご指導いただけると幸いです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.