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

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

Можно ли удалить элемент динамического массива?


Страницы:   1 2

Sagrer ©   (2005-07-05 17:42:00) 

Пытаюсь что-то сделать с помощью CopyRange но не получается... ведь если надо удалять элемент в середине массива - то я думал делать так чтобы часть до этого элемента оставалась неизменной а в часть начиная с этого элемента скопировать содержимое массива начиная с №удаляемого элемента + 1.

Но результат копирования не удается присоединить к уже существующему массиву, только как бы создавая новый массив, начинающийся с 1-го копируемого элемента :(.

Пытался писать на адрес этого элемента - но ссылка получается на то на что ссылается элемент (сами элементы - ссылки на объекты класса).

вот так вот :(. Пока ничего умнее чем писать копирование для содержимого того на что ссылаются элементы не придумал :(.


Юрий Зотов   (2005-07-05 20:10:00) [21]

> begin...end ©   (05.07.05 19:17) [3]

Э-э-э... а каким же образом?


Fay   (2005-07-05 19:24:00) [22]

2 Sagrer   (05.07.05 17:42)
Короче, бери TList и не парь мозги 8)


begin...end   (2005-07-05 19:17:00) [23]

> Юрий Зотов ©   (05.07.05 19:10) [2]
> Если не допускает - CopyMemory и SetLength.

Добавлю, что для случая, когда тип элементов массива является типом с управляемым временем жизни, поэлементное присваивание Element[I] := Element[I + 1]может быть безопаснее, чем CopyMemory.


Юрий Зотов   (2005-07-05 19:10:00) [24]

Sagrer   (05.07.05 17:42)

Если задача допускает переупорядочение элементов массива - см. [1]. Если не допускает - CopyMemory и SetLength.


Fay   (2005-07-05 17:52:00) [25]

Ничего не понял. Совсем.
Что требуется и почему нельзя
MyArray[n] := MyArray[High(MyArray)];
SelLength(MyArray, High(MyArray));

?


Страницы:   1 2

Наверх

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