掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TList.Sortのヘルプの意味がわかりません (ID:22347)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
もしかするとTList(実際はTObjectList)でのコンポーネントの持ち方に問題があるのかも?と気づきました。 そこで、ヘルプの記述に従った形で、典型的なコードを実行したところ期待通りソートされました。 TObjectListのItemにnilを代入したら、上記と同様のエラーが発生します。 TList.Sortと比較関数の問題ではないと言えそうですね。 この質問は解決として、自分でコードを追求してみます。 ママんさん、みなさん、ありがとうございました。 以下のコードはフォームに ・Button1 ・Memo1 を貼り付けて実行しました。 TObjectListを使うため、UsesにContnrsを追加しました。 ----- function CompareNames(Item1, Item2: Pointer): Integer; begin Result := CompareText(TComponent(Item1).Name, TComponent(Item2).Name); end; procedure TForm1.Button1Click(Sender: TObject); var AObjList: TObjectList; AComponent: TComponent; i: Integer; begin AObjList := TObjectList.Create; AComponent := TComponent.Create(Self); AComponent.Name := 'aaaaa'; AObjList.Add(AComponent); AComponent := TComponent.Create(Self); AComponent.Name := 'ccccc'; AObjList.Add(AComponent); AComponent := TComponent.Create(Self); AComponent.Name := 'bbbbb'; AObjList.Add(AComponent); for i := 0 to AObjList.Count -1 do begin Memo1.Lines.Add(TComponent(AObjList.Items[i]).Name); end; //AObjList.Items[1] := nil; AObjList.Sort(@CompareNames); for i := 0 to AObjList.Count -1 do begin Memo1.Lines.Add(TComponent(AObjList.Items[i]).Name); //ソートされて追加される end; AObjList.Clear; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.