|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|
Delphi 6-7 Теоретический пробел в TObject.Create01.09.2023, 13:00. Показов 7308. Ответов 180
Метки нет (Все метки)
Приветствую!
Возник у меня некий теоретический пробел по поводу конструктора TObject.Create. C одной стороны, он ведет себя, как функция, возвращающая указатель на созданный экземпляр. С другой стороны, сам Delphi считает его процедурой. В хелпе указано, что TObject.Create выделяет память, но не инициализирует данные. Но память выделяет. А в исходниках все тело конструктора состоит из begin/end. Правильно ли я понимаю, что этот конструктор - что-то типа разновидности команды для препроцессора, где компилятор Delphi, встречая этот вызов, сам организовывает выделение памяти и возвращение адреса созданного экземпляра?
0
|
|
| 01.09.2023, 13:00 | |
|
Ответы с готовыми решениями:
180
Cannot convert 'void (_fastcall * (_closure )(TObject *,char &))(TObject *,char &)' to 'TKeyPressEvent'
TFilestream.create [cannot create file] |
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
|
| 05.09.2023, 18:15 | |
|
От одного базового класса наследуются все остальные классы, вот и всё. Зачем ещё другие базовые классы - не понятно.
0
|
|
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|||
| 05.09.2023, 18:43 [ТС] | |||
|
Даже object тоже неявно наследуется от TObject. Ну, как уже выше заметили, товарищам из Embarcadero виднее, что нам вредно, что полезно, и сколько у нас может быть базовых классов))) Добавлено через 2 минуты Для того, чтобы при вызове конструктора, программист понимал, что кроме выделения памяти (ладно, с этим я смирился)))/ инициализации VMT и тех фишек, которые нужны лично программисту, ничего постороннего не происходит.
0
|
|||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
||
| 05.09.2023, 18:52 | ||
|
0
|
||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||
| 05.09.2023, 18:59 [ТС] | ||
|
Просто когда раньше было можно, а теперь вдруг стало нельзя, возникают закономерные вопросы, почему нас перестали считать разработчиками, а начали считать клиентами.)))))))
0
|
||
|
0 / 0 / 0
Регистрация: 02.09.2023
Сообщений: 27
|
||||
| 05.09.2023, 19:52 | ||||
|
Если будет создаваться большое множество объектов, то, как говориться курочка по зёрнышку... - может накопиться неподъёмная масса и превратиться в критическую. Остаётся только добавить, что, во-первых, этот минимальный функционал - кот в мешке. Что он там от себя будет чудить? А во-вторых, это услуга, которую я не заказывал. Как, собственно, и vcl. Но это другая история.
0
|
||||
|
Айлурофил
|
||
| 05.09.2023, 20:30 | ||
|
По-моему, это совершенно пустопорожние споры.
0
|
||
|
0 / 0 / 0
Регистрация: 02.09.2023
Сообщений: 27
|
||
| 05.09.2023, 20:56 | ||
|
А Лец - он, бесспорно, классный, но где у нас гарантия, что он был прав? )))
0
|
||
|
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
|
|||
| 06.09.2023, 02:34 | |||
|
Добавлено через 28 минут Ну ещё раз повторю. Код создания этого класса зашит в компилятор для ускорения и оптимизации. Хочешь добавить свой новый базовый класс - нанимайся в группу разработчиков компилятора Дельфи. Не по теме: P.S. Почему-то мне кажется, что вы Constcat, пытаетесь непонятно почему пойти по неверному пути одного ТС из конференции Лазарус, который наивно думает, что он некими ухищрениями сможет создать супер-пупер программу, которая будет летать со скоростью "Кинжалов".
0
|
|||
|
|
|
| 06.09.2023, 08:38 | |
|
мне кажется, тут про яйца пошел разговор, а вот на курицу явно забили
базовый синтаксис, тип, объект - это тот, о котором все знает компилятор. если у вас будет свой базовый объект, то у вас будет и свой компилятор. тогда делфи-то вам накой??
0
|
|
| 06.09.2023, 08:44 [ТС] | ||
|
Не по теме:
А вопросы возникают, потому что подходя к Delphi с ожиданием такого же поведения, как и было в Borland Pascal (хотя бы по части обратной совместимости), некоторые решения создателей удивляют.
0
|
||
|
0 / 0 / 0
Регистрация: 02.09.2023
Сообщений: 27
|
||||||
| 06.09.2023, 14:36 | ||||||
|
Если уж мы заговорили о яйцах... Любой язык программирования существует в двух ипостасях. С одной стороны, сам язык, его формальное описание. Возможно, реализованное де-юре в виде какого-то документа. А, возможно, лишь изложенное авторами как концепция, пусть и развёрнутая. С другой стороны, реализация этого языка в виде прежде всего транслятора (частный случай - компилятора). Их может быть больше одной, и они далеко не всегда реализуют в полной мере и без дополнений "базовый" язык. (Так что, не всё есть директива компилятору.)))) Вот эти-то нескладухи и вызывают вопросы и побуждают к обсуждению их с людьми разбирающимися. Извините, за изложение прописных истин. Просто, я пока не совсем понимаю, на каком уровне абстракции мы здесь находимся. )))))
0
|
||||||
|
Айлурофил
|
|||
| 06.09.2023, 14:56 | |||
0
|
|||
|
0 / 0 / 0
Регистрация: 02.09.2023
Сообщений: 27
|
|
| 06.09.2023, 16:11 | |
|
Да, кэп, это было очень предсказуемо, но, тем не менее, невероятно неожиданно.
Просто, я думал, что на любом форуме все прекрасно понимают, что название раздела задаёт только общее направление, возможно, первичный толчок для темы обсуждения. А вот в какие дебри забредут пытливые умы - это уже досточтимый Морихей надвое сказал. ))) Поэтому я не стал отдельно заострять внимание на разделе (хотя прекрасно его видел). Тем более, что в обсуждениях помянут был и BP, который совсем не делфи, хотя, конечно, был и 6, и 7. ))))
0
|
|
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|
| 06.09.2023, 16:55 [ТС] | |
|
А я еще вопрос подкину. ))) Как я понимаю, object в Delphi остался исключительно для совместимости.
Только вот непонятно, о какой совместимости идет речь. Если раньше можно было объявить переменную типа object, а потом вызвать конструктор Init, то этот же код, перенесенный в Delphi будет давать ошибку. И все равно придется заменять object на class, равно, как и заменять вызов конструктора. Почему нельзя было оставить object в покое - непонятно.
0
|
|
|
0 / 0 / 0
Регистрация: 02.09.2023
Сообщений: 27
|
|
| 06.09.2023, 17:58 | |
|
Если я правильно понял вопрос, то как раз эта штука будет работать. Естественно, если конструктор Init будет описан и реализован.
0
|
|
|
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
|
|||
| 07.09.2023, 01:49 | |||
|
Добавлено через 12 минут P.S. Но вообще обратная совместимость часто идёт во вред. Ибо невозможно порой её реализовать без костылей. Добавлено через 3 минуты Ну и дополнительный вопрос к Constcat. А зачем именно тебе приспичило создавать object? Я понимаю, что тебе это нафиг не нужно. Ну и забудь. P.S. Или ты хотел просто "потрепаться"?
0
|
|||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||||
| 07.09.2023, 08:40 [ТС] | ||||
|
0
|
||||
|
0 / 0 / 0
Регистрация: 02.09.2023
Сообщений: 27
|
|||
| 07.09.2023, 10:21 | |||
|
Я, например, после трёх страниц обсуждения так и не услышал, с какого перепуга процедура находится в правой части оператора присваивания? Дельфи распознаёт TObject.Create как процедуру, в исходнике - это процедура. Как жить дальше - процедура возвращает какое-то значение? Если что, про магию и всеблагосных разрабов я в курсе. Да и вообще, это не вопрос, это иллюстрация вышевысказанного тезиса. ))))
0
|
|||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||
| 07.09.2023, 14:21 [ТС] | ||
|
Хотя... Init, вроде тоже конструктор, а значение не возвращает. Непорядок какой-то у этих всеблагих разрабов)))))
0
|
||
|
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
|
|
| 07.09.2023, 16:51 | |
|
0
|
|
| 07.09.2023, 16:51 | |
|
how can i create mainmenu with any fonts wich i wont and how can i create mainmenu with diferent style? CREATE SEQUENCE - ошибка синтаксиса в "CREATE"
В строке заменить пробел между слов на запятую и пробел Заменить неразрывный пробел NBSP на обычный пробел в файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|