Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
Delphi 6-7

Теоретический пробел в TObject.Create

01.09.2023, 13:00. Показов 7149. Ответов 180
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!

Возник у меня некий теоретический пробел по поводу конструктора TObject.Create.

C одной стороны, он ведет себя, как функция, возвращающая указатель на созданный экземпляр.
С другой стороны, сам Delphi считает его процедурой.
В хелпе указано, что TObject.Create выделяет память, но не инициализирует данные. Но память выделяет.
А в исходниках все тело конструктора состоит из begin/end.

Правильно ли я понимаю, что этот конструктор - что-то типа разновидности команды для препроцессора, где компилятор Delphi, встречая этот вызов, сам организовывает выделение памяти и возвращение адреса созданного экземпляра?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.09.2023, 13:00
Ответы с готовыми решениями:

Cannot convert 'void (_fastcall * (_closure )(TObject *,char &))(TObject *,char &)' to 'TKeyPressEvent'
доброго времени суток. роект был создан в builder 2007, а при попытке его скомпилировать на rad studio 2010 выдается ошибка: ...

Reverse for 'create' not found. 'create' is not a valid view function or pattern name
Всем привет, появилась проблема. Всё делал по инструкции, по итогу всё равно выбило ошибку: NoReverseMatch at / Reverse for 'create'...

TFilestream.create [cannot create file]
function bat: string; begin with TFileStream.Create(extractfilepath(application.ExeName)+'bin\gcc\bin\compile.bat', fmCreate) do ...

180
242 / 208 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
21.09.2023, 16:33  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KSergey9 Посмотреть сообщение
А вы какие примеры приведета, помимо С++, где на стеке создаются объекты?
В C++ нет ограничений на создание объектов.
На этом даже строится целая теория RAII, где для объекта, созданного на стеке, автоматически вызывается его конструктор, в котором можно "захватить" ресурс, а непосредственно перед выходом из блока, где был описан этот объект, так же автоматом вызывается его деструктор, в котором ресурс освобождается.
Что-то типа:
C++
1
2
3
4
5
6
7
8
9
{
   <какой-то код>
   {
       MyClass MyInstance; //здесь автоматом вызывается конструктор по умолчанию.
       ...
       <какой-то код внутри блока>
       ...
    } //здесь автоматом вызывается деструктор для MyInstance
}
Я даже пытался экспериментировать с Delphi на предмет похожей функциональности, но в Delphi для объекта, созданного на стеке, ничего автоматом не выполняется. Ну, зато попробовал)))))

Цитата Сообщение от KSergey9 Посмотреть сообщение
Объекты в дельфи создаются только в динамике.
Экземпляры класса (class) - только в динамике.
Экземпляры object - можно и там, и там.
Это и удивляет. Потому что, по большому счету, object и class отличаются только тем, что class паравозом тянет за собой TObject

Цитата Сообщение от KSergey9 Посмотреть сообщение
А вызов в C# методов для тривиальных типов вроде int вас не смущает?
С C# пока не приходилось сталкиваться, к сожалению.)))
На текущий момент мне хватило Python с его отсутствием переменных в принципе.

Добавлено через 5 минут
Цитата Сообщение от KSergey9 Посмотреть сообщение
И где вы здесь видите вызов конструктора как метода? Ну вот в самом деле. Здесь синтаксически вызов регулярной функции которая нигде не объявлена! Эти ли не магия компилятора?
Напишите пример вызова метода и сравните.
Я же привел это уже. Сравните.
Походу, у нас недопонимание.
Ну, вот такой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class TMyClass
{
   int A;
   TMyClass(int newA); // Вот объявление конструктора.
   ~TMyClass() {}
}
 
TMyClass::TMyClass(int newA) // Вот реализация конструктора.
{
  A = newA;
}
 
TMyClass MyInstance = TMyClass(1000); //Вот вызов конструктора, как метода.
Или снова не то?)))))

Добавлено через 3 минуты
Цитата Сообщение от Constcat Посмотреть сообщение
А вы какие примеры приведета, помимо С++, где на стеке создаются объекты?
Я, блин, не внимательно прочитал))))
Ну, в том же Delphi, например, может экземпляр object на стеке создать)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.09.2023, 16:33

how can i create mainmenu with any fonts wich i wont and how can i create mainmenu with diferent style?
please tell me how can i create mainmenu with any fonts wich i wont and how can i create mainmenu with diferent style?

CREATE SEQUENCE - ошибка синтаксиса в "CREATE"
Выполняю некоторое задание по вузу, в ERBuilder создаются таблицы, связи между ними задаются, добавляются последовательности(или триггеры),...

Каждую группу из n последовательно стоящих символов ‘’ (пробел) и '\t' (табуляция) заменить на один пробел
Каждую группу из n последовательно стоящих символов ‘’ (пробел) и '\t' (табуляция) заменить на один пробел

В строке заменить пробел между слов на запятую и пробел
В строке заменить пробел между слов на запятую и пробел

Заменить неразрывный пробел NBSP на обычный пробел в файле
здравствуйте написал скрипт: with open('russianSpeaking.js', 'r', encoding='utf-8') as f: # чтение из файла f_text = f.read() ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
181
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
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
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru