Советы по Delphi

         

Создание списка списков (TStringList)


Как мне создать TStringList, содержащий в строке имя объекта, и сам объект TStringList?

TStringList имеет возможность хранить для каждой строки свой указатель: см. свойство Objects. Чтобы понять принцип работы с указателями, смотри в электронной справке описание метода TStringList AddObject. Вот пример работы с методом:

StringList1.AddObject('Имя списка', TStringList.Create);

ПРЕДУПРЕЖДЕНИЕ: Delphi не удаляет эти объекты. Вы должны позаботиться об этом сами.

Вы можете получить доступ к связанному stringlist, назначая его переменной TStringList:



TempStringList := TStringList(StringList1.Objects[index]);

Приведенный ниже код правильно компилируется, правильно выполняется и правильно демонстрирует все вышесказанное. Form1 имеет только один компонент Label.

unit Unit1;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)Label1: TLabel;procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);private{ Private declarations }public{ Public declarations }StringList1, TempStringList: TStringList;end;
var
Form1: TForm1;
implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
StringList1 := TStringList.Create;StringList1.AddObject('имя', TSTringList.Create);TempStringList := TStringList(StringList1.Objects[0]);TempStringList.Add('Привет');Label1.Caption := TempStringList[0];end;

procedure TForm1.FormDestroy(Sender: TObject);
var i: Longint;
begin
for
i := 0 to StringList1.Count-1 do beginTempStringList := TStringList(StringList1.Objects[i]);TempStringList.Free;end;end;

end.

[000663]



Содержание раздела