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