![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Exception в TObjectList при Add, из-за чего может быть?
Kolan © (2007-09-17 12:16:00)Здравствуйте,
Есть такой класс:
TCustomDomainObjectList = class(TObjectList)
private
function GetItem(Index: Integer): TCustomDomainObject;
procedure SetItem(Index: Integer; const Value: TCustomDomainObject);
public
constructor Create;
function Add(DomainObject: TCustomDomainObject): Integer;
property Items[Index: Integer]: TCustomDomainObject read GetItem
write SetItem; default;
end;
function TCustomDomainObjectList.Add(
DomainObject: TCustomDomainObject): Integer;
begin
Result := inherited Add(DomainObject);
end;
Не могу понять почему при добавлении возникает Access Violation. Трассировка показала что возникает он здесь:
function TList.Add(Item: Pointer): Integer;
begin
Result := FCount;
if Result = FCapacity then
Grow;
FList^[Result] := Item;
Inc(FCount);
if Item <> nil then
Notify(Item, lnAdded);
end;
Kolan (2007-09-17 13:04:00) [1]> Строки создания и вызова метода в студию.
Да разобрался уже, забыл inherited в середине иерархии классов, общий предок этой иерархии как раз и содержал поле типа TCustomDomainObjectList Без inherited TCustomDomainObjectList не создавался отсюда AV
Anatoly Podgoretsky (2007-09-17 12:24:00) [2]> Kolan (17.09.2007 12:16:00) [0]
TCustomDomainObjectList создан.
Строки создания и вызова метода в студию.
Вася Правильный (2007-09-17 12:23:00) [3]а зачем новый класс без внесения ничего нового в него, кроме ошибок?
Kolan (2007-09-17 12:22:00) [4]Блиин, экземпляр был не создан, забыл inherited