|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|
Delphi 6-7 Теоретический пробел в TObject.Create01.09.2023, 13:00. Показов 7152. Ответов 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
|
|||
| 02.09.2023, 14:57 | |||
|
1
|
|||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|||||
| 02.09.2023, 17:10 [ТС] | |||||
![]() Добавлено через 9 минут То же самое касается и реализации работы со строками. Но когда есть определение процедуры, есть определение функции (в рамках языка), но некая конструкция, считающаяся "процедурой" (по определению) ведет себя как функция (по факту), при этом имея пустое тело, это вызывает вопросы. В модуле System много ассемблерного текста, и это понятно, но это то, на что можно посмотреть (если уж есть желание). Так что это - не compiler magic, а особенности реализации. А вот Create посмотреть так и не удалось))) Пустое тело, даже ассемблер не показали.))) А может я хочу свой аллокатор памяти там использовать, может мне делфийский не устраивает?))) Добавлено через 12 минут
0
|
|||||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
|||
| 02.09.2023, 17:44 | |||
|
Он ещё и для всех полей всех потомков выделяет память. Тоже интересно.
0
|
|||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|||
| 02.09.2023, 17:54 [ТС] | |||
|
Но это я так, придираюсь.))) Но я, собственно, выяснил, что хотел, Create - это, скорее, дирестива компилятору, чем процедура/функция.
0
|
|||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
|
| 02.09.2023, 18:01 | |
|
Если так смотреть, то всё написанное - директивы компилятору.
1
|
|
|
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
|
||
| 03.09.2023, 02:07 | ||
|
А свой "аллокатор памяти" использовать никому не запрещено. Их и так уже было и есть более чем один. Вот только для этого не надо влезать на низкий уровень.
1
|
||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||
| 03.09.2023, 13:51 [ТС] | ||
|
В конце-концов, он не малое дитя, чтобы кто-то определял ему вредное и полезное.
1
|
||
|
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
|
||
| 03.09.2023, 21:57 | ||
|
3
|
||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||
| 03.09.2023, 23:26 [ТС] | ||
|
В моем понимании, разработчик должен стремиться к тому, чтобы понимать, что именно и каким образом выполняется "за кадром". Собственно, я именно такую школу и проходил. Лазил в памяти по сегментам данных, ковырялся в регистрах процессора, подменял PSP, перехватывал прерывания, боролся с нереентрантностью DOS при попытке писать резидентные программы, и т.д., и т.п. Разумеется, все из этого в современном программировании уже не нужно для разработки, но понимание, как оно работает в принципе, очень облегчает процесс программирования. Зачем далеко ходить? Взять ту же Turbo Vision, где все это только начиналось - там были исходники со всеми потрохами и все было открыто и доступно. И никто не считал разработчиков за неразумных детей, которым что-то вредно знать.
0
|
||
|
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
|
|||
| 04.09.2023, 01:52 | |||
|
Но даже если это было так, то это было тогда, когда деревья были большими, а трава зеленая. И не было таких гонок с новыми версиями.
0
|
|||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
|||
| 04.09.2023, 08:31 | |||
![]()
0
|
|||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|||||||||
| 04.09.2023, 09:24 [ТС] | |||||||||
Но напомню, что object'ы по умолчанию не были указателями, память для них выделялась на этапе описания. Добавлено через 20 минут
0
|
|||||||||
|
Злостный нарушитель
10886 / 5822 / 1288
Регистрация: 12.03.2015
Сообщений: 26,880
|
|
| 04.09.2023, 09:30 | |
|
1
|
|
|
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
|
||
| 05.09.2023, 02:43 | ||
|
Но подумайте о следующем. Код создания базового класса вполне следовало зашить в компилятор и таким образом съэкономить парочку наносекунд. Код компилятора представлять на всеобщее обозрение - ну это как-то не правильно. Так вот и вопрос к вам. А нафига вам это? Только ли это любопытство?
0
|
||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|||
| 05.09.2023, 08:49 [ТС] | |||
|
0
|
|||
| 05.09.2023, 11:40 | |
|
Не по теме: а можно сделать чтобы деревья были выше и трава зеленее, и одноклассницы моложе?
0
|
|
| 05.09.2023, 12:55 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 02.09.2023
Сообщений: 27
|
||
| 05.09.2023, 17:51 | ||
|
"вполне следовало зашить в компилятор" - на мой взгляд, слишком сильная фраза. Это либо абсолютная истина, либо совсем наоборот. Да и последствия, Вами заявленные, могут не случиться. И тоже совсем наоборот. Но это так, придирки. Значительно сильнее меня заинтересовало понятие "базовый класс". Буду признателен, если объясните, что именно Вы имеете ввиду. В моём понимании базовый класс ничем принципиально не отличается от любого своего потомка, а, соответственно, давать ему какие-либо преференции непонятно зачем. Более того, программисту никто не запрещает определять свои базовые классы. (Ну, если я правильно понимаю суть этого термина). Да и вообще, мне кажется, что вся дискуссия крутится не вокруг директива/не директива, конструктор/процедура, а связана с тем, что Борланды (или как они теперь называются) возвели тип class в ранг особого, если хотите, придворного типа в Delphi, который стоит особняком, и с ним непозволительны стандартные, опять же, если хотите, привычные операции, допустимые с остальными типами. (Hапример, ТС выше спрашивал, почему нельзя создать экземпляр с помощью New? Ведь был же соответствующий механизм, который, кстати, и остался.) Так что, вопрос... как-бы так выразиться, чтоб никого не обидеть ..."неуважения" разработчиков к клиенту налицо, никуда не делся и разрешения его не заметно... P.S. Пиво пил. Не помогло...
0
|
||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
|
||
| 05.09.2023, 18:02 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 02.09.2023
Сообщений: 27
|
|
| 05.09.2023, 18:06 | |
|
В данном конкретном случае - да, один. Но это и есть следствие привилегированности.
И остаётся открытым вопрос - что такое базовый класс? Что мы вкладываем в это понятие? Возможно, я и Вы говорим о разных вещах. Тогда понятно, что мы можем не сходиться в мнениях.
0
|
|
| 05.09.2023, 18:06 | |
|
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
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|