| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > TObjectList и работа с ним |
| Автор: 1122 25.5.2010, 16:47 | ||||||
| Создаю объект TobjectList. Заполняю. Далее нужно оставить половину элементов от того, что есть. Перегоняю эту половину во временный ObjectList и хочу очистить исходный, чтобы затем вернуть туда эти элементы из временного. Но сыпятся ошибки после того, как я пытаюсь вызвать clear или delete по элементно. Как правильно очищать такие массивы? Выдержки из кода:
Таким способом первоначально формирую массив:
Далее массив дозаполняется элементами:
И вот дальше нужно оставить в Population только N значений. Как это сделать? Спасибо. |
| Автор: Dom 25.5.2010, 17:09 | ||
Если все равно какие элементы удалять, то можно например так
|
| Автор: 1122 25.5.2010, 17:21 |
| Вбил ваш код. Ошибка. Аксесс виалэйшен. |
| Автор: 1122 25.5.2010, 18:03 | ||
| Странные дела. Если написать такой код:
и этот самый каунт будет равен 92, то на 71 итерации, когда будет удаляться 71 элемент произойдет ошибка.Т.к. удаляя на первой итерации 50-тый элемент каунт уменьшается на один и т.д. Когда дойдем до 71 итерации и нужно будет удалить 71й элемент, то его уже не будет. Что можно сделать? |
| Автор: underchronos 25.5.2010, 20:49 | ||
| kami А не проще тогда в этом цикле воспользоваться функцией Extract?
Разве для этого метода будет важно с каким флагов Create? Он удалит ссылку из своего списка и вернет ее, не удалив сам объект. |
| Автор: kami 25.5.2010, 21:27 | ||
"Из любого безвыходного положения есть по меньшей мере два выхода" (с) не помню чье. Возможно, Вам проще сделать так. Но мне было бы лень заводить второй список, тратить время процессора на его создание/заполнение/копирование_в_исходный/уничтожение, когда можно просто воспользоваться кодом Dom, зная при этом что OwnObjects=True. Всё зависит от задачи... Upd: в Вашем случае при перегоне из временного в основной также нужно будет пользоваться Extract, в противном случае - опять контроль OwnObjects временного списка... |
| Автор: underchronos 25.5.2010, 21:33 | ||
Надо запомнить! Да я, честно признаться, задачу не понимаю. |
| Автор: kami 25.5.2010, 21:44 | ||||
Вообще-то исходная проблема звучала как
И решение было дано в первом же ответе Кстати, чем-то этот код напоминает пример игры на Паскале из учебников - "Цивилизация" (не путать со стратегией). Там по определенным условиям в "соседних" клетках "рождались" новые элементы, старели (просто от этапа к этапу), умирали от перенаселенности (когда в 3 или 4 соседних клетках тоже были элементы) и т.п... |
| Автор: bems 26.5.2010, 00:01 |
| kami, это жизнь а не цивилизация |