Форум: "Начинающим";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];
ВнизУдаление элемента из динамического массива Найти похожие ветки
← →
Alexey (2009-08-26 16:55) [0]Господа, добрый день!
Подскажите пожалуйста, как правильно удалить элемент из динамического массива?
Спасибо!
← →
Anatoly Podgoretsky © (2009-08-26 17:04) [1]> Alexey (26.08.2009 16:55:00) [0]
Удалить нельзя, можно только укоротить массив.
← →
clickmaker © (2009-08-26 17:17) [2]присвоить что-то, что будет означать недействительность элемента.
Если это невозможно, тогда только укорачивание со сдвигом остальных элементов
← →
KSergey © (2009-08-26 17:27) [3]можно использовать TList и наследников.
← →
Alexey (2009-08-26 19:34) [4]
> Если это невозможно, тогда только укорачивание со сдвигом
> остальных элементов
>
да вот я только так пока и думал, честно говоря
> можно использовать TList и наследников.
хм...
задумался, спасибо!
← →
Alexey (2009-08-26 19:52) [5]
> KSergey ©
А можно маленькую подсказочку, как мне в TList добавить элемент своего типа?
← →
Ruzzz (2009-08-26 20:20) [6]Можно поискать в папке исходников, которые идут с Delphi, строку " = class(TList)" по маске "*.pas", и посмотреть примеры
← →
Anatoly Podgoretsky © (2009-08-26 20:23) [7]> Alexey (26.08.2009 19:52:05) [5]
TList - это список нетипизированых указателей
← →
Ruzzz (2009-08-26 20:40) [8]Тут стоит обратить внимание на:
procedure Notify(Ptr: Pointer; Action: TListNotification); virtual
Clear, вызывает SetCount(0), который вызывает Delete, Remove также вызывет Delete, сам Delete вызывает Notify, т.е. все предусмотрено для корректного удаления.
Переопределять можно примерно так:procedure Notify(Ptr: Pointer; Action: TListNotification); override;
procedure TMyList.Notify(Ptr: Pointer; Action: TListNotification);
begin
if Action = lnDeleted then begin
TMyListElement(Ptr).Free // или если у нас не класс а структура то
SetLength(PMyListElement(Ptr)^.Str, 0); // не забываем удалять строки и дин. массивы в структуре
Dispose(Ptr);
end;
inherited Notify(Ptr, Action);
end;
← →
Alexey (2009-08-26 23:09) [9]Спасибо!
← →
Alexey (2009-08-26 23:10) [10]Можно тему закрывать.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.053 c