Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление элемента из динамического массива


Alexey ©   (2009-08-26 16:55:00) 

Господа, добрый день!
Подскажите пожалуйста, как правильно удалить элемент из динамического массива?

Спасибо!


Alexey   (2009-08-26 23:10:00) [1]

Можно тему закрывать.


Alexey   (2009-08-26 23:09:00) [2]

Спасибо!


Ruzzz   (2009-08-26 20:40:00) [3]

Тут стоит обратить внимание на:
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;


Anatoly Podgoretsky   (2009-08-26 20:23:00) [4]

> Alexey  (26.08.2009 19:52:05)  [5]

TList - это список нетипизированых указателей


Ruzzz   (2009-08-26 20:20:00) [5]

Можно поискать в папке исходников, которые идут с Delphi, строку " = class(TList)" по маске "*.pas", и посмотреть примеры


Alexey   (2009-08-26 19:52:00) [6]


> KSergey ©

А можно маленькую подсказочку, как мне в TList добавить элемент своего типа?


Alexey   (2009-08-26 19:34:00) [7]


> Если это невозможно, тогда только укорачивание со сдвигом
> остальных элементов
>

да вот я только так пока и думал, честно говоря


> можно использовать TList и наследников.

хм...
задумался, спасибо!


KSergey   (2009-08-26 17:27:00) [8]

можно использовать TList и наследников.


clickmaker   (2009-08-26 17:17:00) [9]

присвоить что-то, что будет означать недействительность элемента.
Если это невозможно, тогда только укорачивание со сдвигом остальных элементов


Anatoly Podgoretsky   (2009-08-26 17:04:00) [10]

> Alexey  (26.08.2009 16:55:00)  [0]

Удалить нельзя, можно только укоротить массив.


Наверх

Титульная страница Поиск, карта сайта Написать письмо