Как мне создать TStringList, содержащий в строке имя объекта, и сам объект TStringList? TStringList имеет возможность хранить для каждой строки свой указатель: см. свойство Objects. Чтобы понять принцип работы с указателями, смотри в электронной справке описание метода TStringList AddObject. Вот пример работы с методом: StringList1.AddObject('Имя списка', TStringList.Create); ПРЕДУПРЕЖДЕНИЕ: Delphi не удаляет эти объекты. Вы должны позаботиться об этом сами. Вы можете получить доступ к связанному stringlist, назначая его переменной TStringList: TempStringList := TStringList(StringList1.Objects[index]); Приведенный ниже код правильно компилируется, правильно выполняется и правильно демонстрирует все вышесказанное. Form1 имеет только один компонент Label. face="Courier New" size="2"> 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. |