![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правильно ли написал наследника TList? [D7]
Ega23 © (2008-06-26 12:19:00)Всё с объектами да с объектами. А тут работу с рекордами и простыми указателями пришлось вспоминать. Короче, правильный ли код?
TGUIDList = class (TList)
private
function GetItem(Index: Integer): TGUID;
public
function Add(Item : TGUID) : Integer;
procedure Clear; override;
property Items[Index : Integer] : TGUID read GetItem; default;
end;
{ TGUIDList }
function TGUIDList.Add(Item: TGUID): Integer;
var
p : PGUID;
begin
New(p);
p^ := Item;
Result := inherited Add(p);
end;
procedure TGUIDList.Clear;
var
i : Integer;
p : Pointer;
begin
for i:=0 to Count-1 do
begin
p := Get(i);
Dispose(PGUID(p));
end;
inherited;
end;
function TGUIDList.GetItem(Index: Integer): TGUID;
begin
Result := PGUID(Get(Index))^;
end;
Только не надо сейчас говорить, что дин.массив тут проще и т.п. Сам знаю. Я "технологию" обкатываю.
Ega23 (2008-06-26 12:31:00) [21]
> метод Notify не реализовал для реакции на удаление
А, это чтобы Dispose вызвать?
Спасибо, действительно не подумал...
Palladin (2008-06-26 12:28:00) [22]метод Notify не реализовал для реакции на удаление
Ega23 (2008-06-26 12:25:00) [23]
> а зачем приводить к PGUID?
Не надо? MM сам помнит, что какого типа?
clickmaker (2008-06-26 12:24:00) [24]> Dispose(PGUID(p));
а зачем приводить к PGUID?