Форум: "Основная";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
ВнизTList, с автоматическим удалением данных, связанных с элементами Найти похожие ветки
← →
DVM © (2006-05-29 11:06) [0]Где то тут на форуме пробегал класс, не подскажите где взять, чтобы не писать с нуля.
← →
Dmitrij_K (2006-05-29 11:09) [1]Может TObjectList
← →
DVM © (2006-05-29 11:19) [2]
> TObjectList
Не, не совсем, хотя приспособить можно, но не то. Список не объектов, а указателей на записи.
То был потомок TList (кажется, от Игоря Шевченко).
← →
Palladin © (2006-05-29 11:30) [3]Type
TAutoFreeList=Class(TList)
Public
Destructor Destroy; Override;
End;
Destructor TAutoFreeList.Destroy;
Var
i:Integer;
Begin
For i:=0 to Count-1 Do FreeMem(Items[i]);
Inherited;
End;
← →
Сергей М. © (2006-05-29 11:34) [4]
> DVM © (29.05.06 11:19) [2]
Перекрой вирт.метод TList.Notify()
← →
DVM © (2006-05-29 11:35) [5]
> Palladin © (29.05.06 11:30) [3]
удаление отдельных элементов забыл :) И еще кое-что.
А вообще, ладно, я уже сам написал.
← →
vl_chel © (2006-05-29 12:32) [6]В классе TObjectList есть свойство OwnsObjects:Boolean которое отвечает за автоматическое удаление связанных с ним обьектов
Список хранит ссылки на TObject
← →
Игорь Шевченко © (2006-05-29 12:44) [7]DVM © (29.05.06 11:19) [2]
У меня объекты были{
Модуль: HSObjectList
Описание: Класс списка объектов. Уничтожает содержащиеся объекты
при собственном разрушении,
имеет метод очистки без уничтожения содержимого.
Ограничения применения: Элементы списка должны быть наследниками TObject
Автор: Игорь Шевченко
Дата создания: 21.11.2001
История изменений:
10.12.2003 - В класс THSObjectList добавлено свойство Objects.
}
unit HSObjectList;
interface
uses
Classes;
type
THSObjectList = class(TList)
private
function GetObjects(I: Integer): TObject;
public
property Objects[I: Integer]: TObject read GetObjects;
procedure Clear; override;
{ Очистка списка без разрушения содержимого }
procedure RemoveAll;
end;
implementation
{ THSObjectList }
procedure THSObjectList.Clear;
var
I: Integer;
begin
for I:=0 to Pred(Count) do
Objects[I].Free;
inherited;
end;
function THSObjectList.GetObjects(I: Integer): TObject;
begin
Result := TObject(inherited Items[I]);
end;
procedure THSObjectList.RemoveAll;
var
I: Integer;
begin
for I:=Pred(Count) downto 0 do
Delete(I);
end;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c