Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1251749645
Alexey
2009-09-01 00:14
2009.10.25
Имя файла в TImage


2-1250865488
Л.Д.
2009-08-21 18:38
2009.10.25
TListView


2-1251500045
sanx
2009-08-29 02:54
2009.10.25
Для изменения boolean в мультипотокс нужны атомарные операции?


2-1251275225
TarenoKostanay
2009-08-26 12:27
2009.10.25
Task Bar


2-1251787851
Ruzzz
2009-09-01 10:50
2009.10.25
Посоветуйте графическую кнопку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский