и деструктор не должен называться
free !
free -это невиртуальная функция класса TObject, которая сама вызывает Destroy. поэтому нужно делать так
Код:
type
TEventList = class(TObject)
....
destructor Destroy; virtual;
end;
и
Код:
destructor TEventList.Destroy;
begin
SetLength(items,0);
Inherited Destroy;
end;
И вот это
в деструкторе делать необязательно.
Если в деструкторе больше кода не будет, то его можно совсем исключить.