掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TListの入れ子構造について (ID:20551)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> もしよかったら、TList型の入れ子構造を作成するいい方法があったら こんな感じです。 { Private 宣言 } public List1: TList; end; var Form1: TForm1; implementation {$R *.dfm} type PMyData = ^TMyData; TMyData = record num:integer; R,G,B:Byte; xnewnum:TList; end; procedure TForm1.FormCreate(Sender: TObject); begin List1 := TList.Create; end; // リストに項目を一つ追加する。 procedure TForm1.Button1Click(Sender: TObject); var pd: PMyData; begin New(pd); pd^.num := 1111; pd^.R := 255; pd^.G := 123; pd^.B := 33; pd^.xnewnum := TList.Create; pd^.xnewnum.Add(pointer(9876)); List1.Add(pd); end; // リストから項目1つを参照する。 procedure TForm1.Button2Click(Sender: TObject); var pd: PMyData; begin pd := PMyData(List1[0]); Label1.Caption := IntToStr(integer(pd^.xnewnum[0])); end; // 全項目を削除する procedure TForm1.FormDestroy(Sender: TObject); var i: integer; pd: PMyData; begin for i = 0 to List1.Count-1 do begin pd := PMyData(List1[i]); pd^.xnewnum.Free; Dispose(pd); end; end; もし、xnewnum フィールドをリンクリストみたいにつかうなら pd^.xnewnum := TList.Create; ではなく pd^.xnewnum := TList(TMyData のインスタンス); のように、たんに TList にキャストして代入するだけです。 その場合は、 pd^.xnewnum.Free; のような個別に Dispose() する必要はありません。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.