Как правильно уничтожить экземпляр PStringCollection, каждый элемент которого есть указателем на строку (создаётся с помощью newstr)?
Это в каком из 16б паскалей такое есть ?
В Турбо Паскале есть... TurboVision вообще на коллекциях построен...
Bokul,
Dispose(my_collection_ptr, Done);
Спасибо.
А как быть с TCollection? Также само просто вызвать деструктор или же сначала надо пробежаться по коллекции, чтобы "вручную" вернуть занятую ее элементами память назад в кучу, и только потом уничтожать сам экземпляр TCollection?
Переопредели FreeItem так, чтобы он мог удалить айтемы твоего типа (если они - НЕ наследники TObject). Вот что об этом говорится в Help-е:
procedure TStringCollection.FreeItem(Item: Pointer);
begin
DisposeStr(Item);
end;
А я не понял, о чем ты спрашиваешь... Выше был вопрос о TCollection... Это - абстрактная коллекция, элементы которой удаляются самостоятельно ТОЛЬКО тогда, когда они - наследники TObject... Теперь ты вдруг говоришь о TStringCollection, которая в принципе предназначена для работы со строками, было бы странно, если бы она эти строки не удаляла сама...