|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Зачем нужны динамические массивы?
У меня вопрос к уважаемому сообществу: зачем нужны динамические массивы, если в них нельзя положить экземпляр класса? Речь про динамические массивы встроенные в язык, которые array of.
Не стоит путать форумы с богадельнями. © Bargest |
#2
|
||||
|
||||
не совсем понял что с ними нельзя сделать
Пишу программы за еду. __________________ |
#3
|
||||
|
||||
упоролись?
Код:
var obj: array of TObject; begin SetLength(obj, 1); obj[0] := TList.Create; end. ЧЯДНТ? Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров |
#4
|
||||
|
||||
Цитата:
Не стоит путать форумы с богадельнями. © Bargest |
#5
|
||||
|
||||
Цитата:
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров Последний раз редактировалось madMonia, 25.03.2014 в 19:17. |
#6
|
||||
|
||||
У массивов и списков для объектов разный уровень абстракции.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#7
|
||||
|
||||
аа, я понял, вы хотели не ссылки на объекты, но сами объекты в массивы складывать? Но в делфи вы нигде напрямую с объектами не работаете. И мне кажется это к лучшему, потому что из-за этой двойственности один гемор. Особенно в случае динамических массивов
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров |
#8
|
||||
|
||||
Цитата:
Не стоит путать форумы с богадельнями. © Bargest |
#9
|
||||
|
||||
Ну зачем сразу запрет. array, по идеи, часть синтаксиса, и позволяет формально задавать массив чего угодно. Как он будет работать - проблемы программиста. Тут нет особого смысла задавать доп. ограничения, т.к. идея массива - просто блок совершенно произвольных данных.
TList же - фактически является сторонним по отношению к языку расширением. То есть можно сделать компилятор паскаля, который будет компилировать чистый pas, но не будет иметь сторонних библиотек (или будет иметь другие). Уверен, в стандарте паскаля (если он конечно имеется ) не прописано TList'а. Зато TList имеет полезные ништяки типа Add. Ну а зачем TObjectList - понятно. jmp $ ; Happy End! The Cake Is A Lie. |
#10
|
|||
|
|||
Ну вот тебе пример использования динамического массива с объектами. Пусть некоторый компонент отображает список некоторых объектов, в т.ч. управляя временем их жизни. У этого компонента есть специальный метод (св-во, что еще), который возврящает список выделенных пользователем объектов. Вот тебе применение для динамического массива. Немного притянуто за уши, но вполне работоспособная схема.
|
#11
|
||||
|
||||
Я, например, активно использую динамические массивы для хранения чисел, строчек, буквочек. Вопрос: "а зачем они (массивы) нужны" считаю какам-то надуманным.
Цитата:
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#12
|
||||
|
||||
Отвечу сразу всем, без цитат.
Сабжевый вопрос у меня возник после регулярного просмотра форумов по программированию на Паскале/Delphi, где новички или пытаются использовать динамические массивы (не всегда корректно, на мой взгляд), или им советуют их использовать, а библиотеки контейнеров VCL/LCL остаются за рамками советов. При этом на уровне кода только статические массивы не влекут дополнительных накладных расходов, придавая тип непрерывным блокам памяти, а динамические массивы уже реализованы библиотечными функциями, незаметно вставляемыми компилятором в код. Код этих функций никак не пересекается с реализацией TList и TStrings, там эта функциональность фактически продублирована. Есть подозрение, что это результат работы разных групп программистов, своего рода "придумано не нами" в рамках одной компании, типа ATL и MFC, но в Delphi. Историю не копал, утверждать не могу. Тем не менее, простой запрет был бы вполне логичен, заставляя для ОО-типов пользоваться ОО-контейнерами. Быдлокода стало бы хоть чуть-чуть меньше, -- и в Интернете, и IRL. Не стоит путать форумы с богадельнями. © Bargest |
#13
|
||||
|
||||
Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#14
|
||||
|
||||
запретить array of TObject, будут использовать array of Integer и приводить TObject (Pointer) к Integer перед присвоением элементу
Пишу программы за еду. __________________ |
#15
|
||||
|
||||
Цитата:
Не стоит путать форумы с богадельнями. © Bargest |