|
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
|
|
| 09.09.2023, 23:05 | |
|
Так, софистика или эвфемизм?
Ладно, считайте, как хотите. Запрещено, так запрещено.Только не понятно, чем так куча не угодила, и чем стек лучше? Только тем, что память выделяется чуть быстрее?
0
|
|
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|||
| 09.09.2023, 23:47 [ТС] | |||
|
Не по теме:
2. int a; int &b = a; = var a: Integer; var b: Integer absolute a; 3. int *a; int b; a = &b; = var a: ^Integer; var b: Integer; a:=@b; Примерно так. Добавлено через 7 минут Если объект создан на стеке, то память для него выделена уже заранее, геморроя меньше. Я помню, что мы тут про Delphi, но все-таки смещусь в сторону связки c++/Python, когда переменные окружения приходилось передавать из c++ в Python в виде килобайтного буфера, созданного на стеке, т.к, с динамикой были большие проблемы. Я к тому, что ситуации разные бывают, и запрещать разработчику какие-то вещи, которые для других типов данных вполне допустимы, более, чем странно.
0
|
|||
|
0 / 0 / 0
Регистрация: 02.09.2023
Сообщений: 27
|
||
| 10.09.2023, 00:54 | ||
|
Добавлено через 6 минут "Может", - что я говорю! NewInstance - виртуальный метод, автоматом вызывается в конструкторе. Сам же говорил. ))) Пора спать!
0
|
||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||
| 10.09.2023, 01:06 [ТС] | ||
|
Точно так же, как выделяется память в динамике, так же память и выделится в дате (специально для тебя пишу))) на этапе компиляции. В чем понт?
0
|
||
|
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
|
|
| 10.09.2023, 01:54 | |
|
0
|
|
|
462 / 185 / 32
Регистрация: 04.08.2018
Сообщений: 732
|
||||
| 15.09.2023, 19:35 | ||||
0
|
||||
|
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
|
|
| 16.09.2023, 01:51 | |
|
Rayvenor, я бы предложил ещё такое определение функций и процедур. Имхо оно более правильное в каком-то смысле. А именно в смысле использования в коде.
Функция может присутствовать в "правой части выражения". Процедура не может.
1
|
|
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||
| 16.09.2023, 02:09 [ТС] | ||
|
Или того же присвоения для другой переменной процедурного типа. Формально говоря, процедура в данном случае ведет себя, как функция, возвращая некий результат.
0
|
||
|
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
|
||
| 16.09.2023, 02:30 | ||
|
2
|
||
|
|
|
| 16.09.2023, 11:22 | |
|
странно говорить, что процедура чего-то там возвращает
давайте обобщим, она может воспользоваться любым указателем на любой объект или любой глобальной переменной и поменять ее это же не считается возвратом? а если нам ссылку на переменную дали в параметрах - то сразу возврат???
0
|
|
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||
| 16.09.2023, 11:36 [ТС] | ||
|
А насчет компилятора - так функция сама по себе тоже ничего не возвращает. Это тоже делает компилятор))) Но это так, болтология)))) Вот, например, в С все функции. Даже процедуры, которые "возвращают пустое значение void"
0
|
||
|
32 / 26 / 7
Регистрация: 22.02.2019
Сообщений: 111
|
||
| 16.09.2023, 12:49 | ||
|
Другое дело вопрос удобства.
0
|
||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||
| 16.09.2023, 14:11 [ТС] | ||
|
С учетом того, что NewInstance всего лишь враппер для InitInstance, где все завязано на том, что уже выделен некий участок памяти, который нужно проинициализировать соответствующим образом. Т.е, чтобы организовать экземпляр класса в статической памяти, нужно заранее объявить там какую-то переменную нужного размера (интересно как?), а затем передать ее адрес в InitInstance. Вот это "интересно как?" мне действительно интересно!)))))
0
|
||
|
32 / 26 / 7
Регистрация: 22.02.2019
Сообщений: 111
|
||||||
| 16.09.2023, 15:10 | ||||||
|
Делфей у меня уже много лет как нет. Можно попробовать FPC в качестве заменителя.
@s: $102FE58 o.Name: TMyObj_$102FE58 o.Value: 42
0
|
||||||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|
| 16.09.2023, 16:31 [ТС] | |
|
0
|
|
|
32 / 26 / 7
Регистрация: 22.02.2019
Сообщений: 111
|
|
| 16.09.2023, 17:31 | |
|
Размер буфера должен быть не меньше InstanceSize.
0
|
|
|
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
|
||
| 17.09.2023, 01:53 | ||
0
|
||
|
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|||||||
| 17.09.2023, 13:30 [ТС] | |||||||
|
Например,
По поводу тайпкастинга, тоже иогу сказать, что не каждую функцию можно запихнуть в любое выражение. И тоже может потребоваться приведение типа))) P.S. В тех же С вообще процедур нет. Там есть только "функции, возвращающие пустое значение"
0
|
|||||||
| 17.09.2023, 13:37 | |
|
0
|
|
| 17.09.2023, 14:15 [ТС] | |
|
0
|
|
| 17.09.2023, 14:15 | |
|
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
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|