TCompartmentSpace.DeleteCargo(Index: Dword);
begin
if (Index < Dword(Length(Cargos))) then
begin
FreeAndNil(Cargos[Index]); // Free the cargo object and set its reference to nil
Delete(Cargos, Index, 1); // Removes 1 cargo element at position Index
end;
end;
Будет ли правильно это работать?
А если уровень вложенности большой, что нужно вызывать? Деструктор на каждый элемент, функцию Delete? Как это все чистить правильно?
зачем тут dword? integer обычно удобнее
тут дело не в этом, меня интересует каскадное удаление элементов вложенных классов
Определи логическую структуру, кто за что отвечает и владеет. И оно само нарисуется
а вот не рисуется, удаляем элемент с более высоким уровнем, и он должен каскадно удалять ветку с динамическими массивами экземпляров подклассов, но как? Поэлементно вызывать по всему вложенному дереву деструкторы? Удалять элементы из массивов, аони автоматом вызывают соответствующий деструктор?
вроде всё чётко а удалять Delet'ом обязательно? Может потом освободить всё сразу?
массив отдельно, объекты отдельно только если это не объекты с интерфейсом(да ведь?)
ээ, нет, не все просто. Есть система вложенных классов, и на любом уровне мы можем удалить элемент массива отвечающий за ветку. Это к интерфейсу не имеет никакого отношения
Обсуждают сегодня