Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2009, 11:30   #1
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
Вопрос Освобождение динамического массива?

Вот выделил массив:

Код:
var
a : array of integer;
Выдиляю:
SetLength(a,1000);

а вот как освободить половину,
пытаюсь сделать так
SetLength(a,500);
500 элементов не освобождаются.
VintProg вне форума Ответить с цитированием
Старый 27.08.2009, 11:41   #2
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

так, ты освобождаешь физически, т.е. удаляешь 500 элементов массива,
если надо чтобы они стали пустыми, то просто верни длину массива в 1000
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 27.08.2009, 11:43   #3
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Цитата:
то просто верни длину массива в 1000
Как это напиши.
VintProg вне форума Ответить с цитированием
Старый 27.08.2009, 11:44   #4
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

SetLength(a,1000);
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 27.08.2009, 11:44   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
500 элементов не освобождаются.
Что это значит ? Вы имеите ввиду что они остаются в памяти (занимают место определенное т.е. 500 * SizeOf(Integer) ? Или же то, что их значения сохраняются (значения каждого элемента массива) ?

p.s. точно сам незнаю, но вроде Delphi контролирует такой тип массива (объвляенный как array[] of), т.е. можно и не вызывать SetLength(ArrayName, 0);
BOBAH13 вне форума Ответить с цитированием
Старый 27.08.2009, 11:50   #6
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Просто у меня для игры вот класс пули:
TBulletHit
я создаю их пачку в массиве
Bull : array of TBullet;
просто созданные пули надо очищать и массив.
VintProg вне форума Ответить с цитированием
Старый 27.08.2009, 11:50   #7
856100
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 135
По умолчанию

var
a : array of integer;
....
a:=nil; //освобождение выделеной памяти (потом можно еще раз вызывать SetLength)
Будь проще, бери пример с одноклеточных
856100 вне форума Ответить с цитированием
Старый 27.08.2009, 11:51   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от VintProg Посмотреть сообщение
Просто у меня для игры вот класс пули:
TBulletHit
я создаю их пачку в массиве
Bull : array of TBullet;
просто созданные пули надо очищать и массив.
High and Low - для прогонки массива в цикле.
В классе напишите метод для отчистки полей в public секции, в цикле соотвественно его и вызывайте, чтобы отчистить.
BOBAH13 вне форума Ответить с цитированием
Старый 27.08.2009, 11:53   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
т.е. можно и не вызывать SetLength(ArrayName, 0);
Лучше вызывать, надежнее
Вместо массива советую TObjectList. Он сам высвобождает и массив и его обьекты.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2009, 12:02   #10
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

А использовать TList?
VintProg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение динамического массива Horus92 Помощь студентам 3 07.05.2009 12:36
Создание н-мерного динамического массива Парсифаль Общие вопросы C/C++ 33 02.05.2009 18:29
Удаление динамического массива Сергей089 Общие вопросы C/C++ 3 08.03.2009 13:13
Удаление элементов из динамического массива dashulka Общие вопросы Delphi 4 31.10.2008 14:03
Удаление элемента динамического массива Dogmat Помощь студентам 6 13.07.2008 14:33