Delphi 1
Создание списка списков (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 begin
TempStringList := TStringList(StringList1.Objects[i]);
TempStringList.Free;
end;
end;end. |
[000663]