掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TList.Sortのヘルプの意味がわかりません (ID:22348)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
寝る前にサンプルを投下 これで基本概念を理解してください。 明日は深夜までここへは来れません unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Contnrs; type PMyItem = ^TMyItem; TMyItem = record myName:String; //自分で定義(本来被りそうな名前は使用するべきでない) end; TMyObject = class(TObject) private public myName:String; //自分で定義(本来被りそうな名前は使用するべきでない) end; TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Button2: TButton; Button3: TButton; Memo1: TMemo; Button4: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private 宣言 } AObjList: TObjectList; AList : TList; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} function CompareMyItemName(Item1, Item2: Pointer): Integer; begin Result := CompareText(PMyItem(Item1).myName, PMyItem(Item2).myName); end; function CompareMyObjectName(Item1, Item2: Pointer): Integer; begin Result := CompareText(TMyObject(Item1).myName, TMyObject(Item2).myName); end; procedure TForm1.Button1Click(Sender: TObject); var myObj1:TMyObject; myItem:PMyItem; begin //追加の例 new(myItem); myItem.myName:=Edit1.Text; AList.Add(myItem); myObj1:=TMyObject.Create; myObj1.myName:=Edit1.Text; AObjList.Add(myObj1); end; procedure TForm1.FormCreate(Sender: TObject); begin AObjList:= TObjectList.Create; AList := TList.Create; end; procedure TForm1.Button2Click(Sender: TObject); begin //ソートの例 AObjList.Sort(@CompareMyObjectName); AList.Sort(@CompareMyItemName); end; procedure TForm1.Button3Click(Sender: TObject); var i:integer; begin //列挙の例 Memo1.Clear; Memo1.Lines.Add('--AList--'); for i:=0 to AList.Count-1 do Memo1.Lines.Add(PMyItem(AList.Items[i]).myName); Memo1.Lines.Add(''); Memo1.Lines.Add('--AObjList--'); for i:=0 to AObjList.Count-1 do Memo1.Lines.Add(TMyObject(AObjList.Items[i]).myName); end; procedure TForm1.Button4Click(Sender: TObject); var i:integer; begin //削除の例 for i:=AList.Count-1 downto 0 do Dispose(PMyItem(AList.Items[i])); AList.Clear; for i:=AObjList.Count-1 downto 0 do TMyObject(AObjList.Items[i]).Free; AObjList.Clear; end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.