掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TList.Sortのヘルプの意味がわかりません (ID:22349)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> TObjectListのItemにnilを代入したら、上記と同様のエラーが発生します。 > TList.Sortと比較関数の問題ではないと言えそうですね。 CompareTextの仕様を忘れましたが 単にnilチェックする必要があるだけでは? function CompareNames(Item1, Item2: Pointer): Integer; begin if (not Assinged(Item1)) and (not Assinged(Item2)) then begin Result := 0; end else if (not Assinged(Item1)) and (Assinged(Item2)) then begin Result := -1; end else if (Assinged(Item1)) and (not Assinged(Item2)) then begin Result := +1; end else begin Result := CompareText(TComponent(Item1).Name, TComponent(Item2).Name); end; end; こんなんでしたっけ? 比較関数は、リストに ItemA ItemB ItemC ItemD ItemE が入っている場合に、List.Sortが呼び出されると CompareNames(ItemA, ItemB)が呼び出されて 結果が正か負か同じかでItemAとItemBの場所を入れ替えるかどうか決める 同様に、 CompareNames(ItemB, ItemC) CompareNames(ItemC, ItemD) を呼び出していくという比較が行われて、その結果で順番がそろう という概念ですよ。 (概念だけで、実際は上から順番に比較するのではないと思いますけど。) TComponent(Item1).Name と書いているのですから Item1にnilが入ってきたら、nilの対応しないと誤動作するでしょう。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.