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

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

dynamic array и версия дельфи


Страницы:   1 2

sergey L. ©   (2006-10-13 17:31:00) 

В какой версии минимальной версии дельфи допустимо использование dynamic array? Третью я проверил - не понимает. Шестая и старше - понимает, но хотелось бы младше :)


Kolan   (2006-10-15 11:03:00) [1]

Общие вопросы (вопросы по Дельфи, которые не попадают в другие конференции)


@!!ex   (2006-10-15 08:58:00) [2]


> Kolan ©   (13.10.06 21:01) [23]

Это определение КОНРЕТНО Дельфевой реализации, однако это не есть абстрактное определение Динамического массива.


Kolan   (2006-10-13 21:01:00) [3]

Dynamic arrays do not have a fixed size or length. Instead, memory for a dynamic array is reallocated when you assign a value to the array or pass it to the SetLength procedure.

Dynamic-array variables are implicitly pointers and are managed by the same reference-countingtechnique used for long strings.


Ketmar   (2006-10-13 20:59:00) [4]

зато в Delphi есть. откуда я и плясал. %-)


@!!ex   (2006-10-13 20:52:00) [5]


> Ketmar ©   (13.10.06 20:46) [20]

Вообще то я гооврил о массивах в  Паскале. ;)
А там в хелпе нету описания такого понятия. :))


Ketmar   (2006-10-13 20:46:00) [6]

>[19] @!!ex(c) 13-Oct-2006, 20:41
>По определению дельфи? :)
а мы тут Eiffel, оказывается, обсуждали? %-)


@!!ex   (2006-10-13 20:41:00) [7]


> динамический массив по определению является автоматически
> управляемым объектом.

По определению дельфи? :)

Определение из интернета(Учебник по Basic'у):
"Динамические массивы - это такие массивы, размерность которых может меняться в ходе работы программы."

Определение из интернета(Учебник по С++):
"Динамический массив – это массив, размерность которого задается динамически по ходу программы."

Определение из интернета(Учебник по VBA):
"Динамический массив - это массив с переменным размером, т.е. количество элементов может изменяться во время выполнения программы. "

Определение из интернета(codingclub.net):
"Кусок о динамическом массиве является описанием статического массива. Динамическим массивом является описание неопределенного количества ячеек. Затем в программе можно определить количество ячеек. Этим и отличается динам. массив от статика."

Ни слова о том, что что-то должно происходиьт автоматически. :))
Ладно, у меня доводы кончились, ты выиграл. :)


Ketmar   (2006-10-13 20:27:00) [8]

если компилятор не умеет автоматически освободить память, выделеную под массив, то это называется "работа с кучей" (или подобным), но никак не "работа с динамическими массивами". динамический массив по определению является автоматически управляемым объектом.


@!!ex   (2006-10-13 20:20:00) [9]


> Ketmar ©   (13.10.06 20:16) [16]

ИМХО автоматическое освобождение памяти при выходе из процедуры не имеет никакого отношения к динамическим массивам.
Просто приятная фича некоторых высокоуровневых языков.


Ketmar   (2006-10-13 20:16:00) [10]

это лично мой перевод. которые делался на надмозгами и подстрочником, а головой.


@!!ex   (2006-10-13 19:51:00) [11]


> Ketmar ©   (13.10.06 18:34) [14]

Это лично твое определение слова "динамический"?
Или оно откуда то взято?


Ketmar   (2006-10-13 18:34:00) [12]

ну вот и помедитируй на слово "динамически выделяет". пойми, что это не к работе с кучей относится, а именно к compiler magic. которой у TP/BP напрочь нет. и не путай больше термины. %-)


@!!ex   (2006-10-13 18:29:00) [13]

Кстати, вот основной критерий "динамичности" переменных(Взято из описания динамических массивов дельфи, кстати):

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


@!!ex   (2006-10-13 18:26:00) [14]


> Ketmar ©   (13.10.06 18:19) [11]

А я всегда наивно полагал, что динамический массив это тот массив, который может менять свою размерность динамически, в процессе работы.

Может вспомним С#  в котором вообще менеджер памяти мощнейший? :)


Ketmar   (2006-10-13 18:19:00) [15]

>[10] @!!ex(c) 13-Oct-2006, 18:18
>> более того: сильно хочу посмотреть на автоматическое
>>управление такими массивами в TP/BP.
>А в чем собственно проблема?
медитируем на слово "автоматическое". очень хочу увидеть, как BP самосвобождает память по выходу массива из области видимости. пока этого нет -- ни о каких динамических массивах речи идти не может.


@!!ex   (2006-10-13 18:18:00) [16]


> "реализуется" -- не значит "есть штатно".

Вопрос был в том, в какой версии можно использовать динамические массивы. Ответ - в любой. Насколько это сложно - уже другой разговор. ;)


> более того: сильно хочу посмотреть на автоматическое управление такими массивами в TP/BP.


А в чем собственно проблема?
Выделяем память под массив, вначале храним размер, пишем свою процедурку изменения размера, которая в случае уменьшения размера массива, особождает кусочек памяти(хотя тут есть варианты действие) и уменьшает размерность, в случае увеличения размера выделяет новую память и переносит туда старые данные.

Еще вопросы?


> Значит еще есть пороховницы для пороха:))

конечно есть, я уже 11 лет постоянно узнаю чето новое о Паскале и до конца жизни буду узнавать, меня это не очень напрягает. :)


> Почитай hlp Delphi об открытых массивах.

Почитал.


> Это другое, но тем не менее.

Насколько мне известно, Паскаль такое не поддерживает.


Jeer   (2006-10-13 18:11:00) [17]

@!!ex ©   (13.10.06 17:58) [7]

Я тебя заверю, что это реализуется без проблем и на asm,  и на Pascal,  и на...


> OpenArray(Впервые слышу. :\)


Значит еще есть пороховницы для пороха:))
Почитай hlp Delphi об открытых массивах.
Это другое, но тем не менее.


Ketmar   (2006-10-13 18:09:00) [18]

>[7] @!!ex(c) 13-Oct-2006, 17:58
>SetLength, то могу сказать, что на Паскале такой интерфейс
>реализуется без особых проблем.
"реализуется" -- не значит "есть штатно". более того: сильно хочу посмотреть на автоматическое управление такими массивами в TP/BP.


@!!ex   (2006-10-13 17:58:00) [19]


> sergey L.   (13.10.06 17:50) [6]

Ну ка, ну ка.
Пример Dynamic Array и OpenArray(Впервые слышу. :\) в студию. Интересно.
Если под Dynamic Array подразумевается тот интерфейс, который позволяет изменять размер массива процедуркой SetLength, то могу сказать, что на Паскале такой интерфейс реализуется без особых проблем.


sergey L.   (2006-10-13 17:50:00) [20]

Спасибо всем за ответы.

> Хм... А я использовал динамические массивы в Borland Pascal 7.0....
 Это был open array, совсем не то же самое, что dynamic array.


Страницы:   1 2

Наверх

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