|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|
Delphi 6-7 Теоретический пробел в TObject.Create01.09.2023, 13:00. Показов 7146. Ответов 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 на обычный пробел в файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет дублирования строк в табличной части
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: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|