Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.039 c
5-1143724023
AlexeyT
2006-03-30 17:07
2006.11.26
Ошибка при удалении ActiveX контрола


1-1161011964
BorisMor
2006-10-16 19:19
2006.11.26
Матричный принтер


15-1162667740
Raea
2006-11-04 22:15
2006.11.26
Аналоги функций char и ord в C++!


15-1162633764
PEAKTOP
2006-11-04 12:49
2006.11.26
Линейная оптимизация раскроя (порезки) материала


2-1163061812
yyy111
2006-11-09 11:43
2006.11.26
for i := ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский