![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли удалить элемент динамического массива?
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));
?