Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.26;
Скачать: CL | DM;

Вниз

dynamic array и версия дельфи   Найти похожие ветки 

 
sergey L.   (2006-10-13 17:31) [0]

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


 
i-am-vladko ©   (2006-10-13 17:32) [1]

5 точно может


 
MBo ©   (2006-10-13 17:35) [2]

в 4 появились


 
@!!ex ©   (2006-10-13 17:39) [3]

Хм... А я использовал динамические массивы в Borland Pascal 7.0....
Лабу с использованием их сдавал в ВУЗ..... :\


 
RWolf   (2006-10-13 17:41) [4]

имхо, это были совсем другие динамические массивы.


 
@!!ex ©   (2006-10-13 17:43) [5]


> RWolf   (13.10.06 17:41) [4]

Фиг знает.
Но я их в дельфе успешно использую...
Тем боле не спрашивалось о конкретных массивах. :)


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

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

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


 
@!!ex ©   (2006-10-13 17:58) [7]


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

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


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

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


 
Jeer ©   (2006-10-13 18:11) [9]

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

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


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


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


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


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

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


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


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

Еще вопросы?


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

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


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

Почитал.


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

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


 
Ketmar ©   (2006-10-13 18:19) [11]

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


 
@!!ex ©   (2006-10-13 18:26) [12]


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

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

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


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

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

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


 
Ketmar ©   (2006-10-13 18:34) [14]

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


 
@!!ex ©   (2006-10-13 19:51) [15]


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

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


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

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


 
@!!ex ©   (2006-10-13 20:20) [17]


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

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


 
Ketmar ©   (2006-10-13 20:27) [18]

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


 
@!!ex ©   (2006-10-13 20:41) [19]


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

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

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

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

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

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

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


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

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


 
@!!ex ©   (2006-10-13 20:52) [21]


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

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


 
Ketmar ©   (2006-10-13 20:59) [22]

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


 
Kolan ©   (2006-10-13 21:01) [23]

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-counting technique used for long strings.


 
@!!ex ©   (2006-10-15 08:58) [24]


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

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


 
Kolan ©   (2006-10-15 11:03) [25]

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



Страницы: 1 вся ветка

Текущий архив: 2006.11.26;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.054 c
1-1160574242
MegaVolt
2006-10-11 17:44
2006.11.26
Почему происходит глюк с отрисовкой в TListView?


4-1152920860
Ayvan
2006-07-15 03:47
2006.11.26
enabled or not?


15-1162909504
TIF
2006-11-07 17:25
2006.11.26
У кого есть опыт борьбы с троянами-шутдаунерами?


2-1163097500
Mr tray
2006-11-09 21:38
2006.11.26
Как избежать мигания при прорисовке?


1-1160995519
vegarulez
2006-10-16 14:45
2006.11.26
Народ, подскажите компоненту для обмена по протоколу HTTPS.