Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для TermenatorX
2 / 2 / 0
Регистрация: 14.02.2013
Сообщений: 145

Почему record не заменили class' ом?

10.09.2015, 19:30. Показов 2809. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему record не заменили class'ом?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.09.2015, 19:30
Ответы с готовыми решениями:

Record, object or class type required
В самоучитель по Делфи решил проверить программу. Набрав код программы выдает ошибку: Record, object or class type required unit...

Record, object or class type required ?
ребята, помогите пожалуйста решить проблему кода, каши по наварил там, башка совсем не работает: procedure TForm1.BombClick(Sender:...

Комплексные числа: Преобразовать record в class
Как можно преобразовать record в class?Помогите пожалуйста!! type complex=record re,im:real; end; ...

13
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
10.09.2015, 19:46
А почему его, по-твоему, должны были заменить ?
0
 Аватар для TermenatorX
2 / 2 / 0
Регистрация: 14.02.2013
Сообщений: 145
10.09.2015, 19:59  [ТС]
Ну судя по моим размышлениям класс - это рекорд + конструктор + деструктор.

Добавлено через 42 секунды
И то и то объект с параметрами.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
10.09.2015, 20:28
Размышления верные по форме, но примитивные по существу)

Класс (и объект класса) действительно являет собой запись, но это далеко не единственное и не самое важное их сходство. Различий же между ними великое множество.

Главное же:

- не все что можно реализовать на механизме записей, можно реализовать на механизме классов. И наоборот.

- поддержку Паскаль-кода времен царя Гороха, где сплошь и рядом применялись записи и объекты (не экземпляры классов), никто пока не отменял

- базовую совместимость с записями в "дружественных" языковых средах разработки, где записи никто не отменял и вряд ли отменит, ликвидировать нельзя
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
10.09.2015, 21:15
+ ну и еще запись уже как бы существует, а объект нужно создавать явно
иногда это удобнее
вот варианты где используется New(rec) точно должны быть заменены
0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
10.09.2015, 21:19
Неправильно. Запись это не объект, это тупо кусок памяти.
0
10.09.2015, 21:22

Не по теме:

Цитата Сообщение от UI-Maker Посмотреть сообщение
Запись это не объект, это тупо кусок памяти
Во как)
Можно подумать что объект, в отличие от записи, - это либо не тупо либо не кусок либо не памяти)

0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
10.09.2015, 21:34
Класс это по сути блок функций, иногда (но вовсе не обязательно) с куском памяти выделяемым при инициализации модуля (статические поля).
Объект так же может содержать кусок памяти, выделяемой при создании (поля объекта), но это же тоже не обязательно.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
10.09.2015, 21:48
Цитата Сообщение от UI-Maker Посмотреть сообщение
Класс это по сути блок функций, иногда (но вовсе не обязательно) с куском памяти выделяемым при инициализации модуля (статические поля)
Класс всегда есть блок памяти, содержащий поля, часть которых всегда присутствует в этом блоке. Тоже самое справедливо и для объекта как экземпляра этого класса.

А вот запись вовсе не обязана всегда представлять собой блок памяти, если при ее декларации не объявлено ни одно поле.
0
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
10.09.2015, 22:21
Класс без полей? Самую важную часть памяти в классе занимает код. В записи нет кода.

Кто и зачем делает запись без полей? Считаю компилятор вообще не должен такое пропускать.
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
11.09.2015, 00:20
Цитата Сообщение от TermenatorX Посмотреть сообщение
Почему record не заменили class'ом?
В дополнение к сказанному.
Если бы кто-то стал заставлять меня в обязательном порядке заменять записи классами - убил бы на месте без объяснения причин. Как прикажете мне заменять вариантные записи? Не. извратиться-то конечно можно, но я всё-таки не мазохист какой-нибудь.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
11.09.2015, 08:27
Цитата Сообщение от UI-Maker Посмотреть сообщение
Класс без полей?
Не бывает.

Цитата Сообщение от UI-Maker Посмотреть сообщение
Самую важную часть памяти в классе занимает код
Нет там никакого кода. Вообще. Совсем. Есть куча полей, часть из которых содержит адреса методов.

Цитата Сообщение от UI-Maker Посмотреть сообщение
В записи нет кода
Конечно нет. Так же как и в классе и в объекте.

Цитата Сообщение от UI-Maker Посмотреть сообщение
Кто и зачем делает запись без полей?
Ну я делаю).. И никто и ничто не запретит мне сделать запись нулевого размера)

Цитата Сообщение от UI-Maker Посмотреть сообщение
компилятор вообще не должен такое пропускать
Пропускает. Жует и причмокивает)
Для него запись без полей вовсе не криминал.
1
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
11.09.2015, 10:11
Не бывает.
С чего это? Открыл Делфи. Создал класс без полей. Всё работает. И в разных модулях (в том числе в VCL) видел классы без полей.
Конечно нет. Так же как и в классе и в объекте.
, часть из которых содержит адреса методов.
В объекте кода нет. А в классе есть. Методы по-вашему невесомые или в вакууме, не хранятся нигде, места не занимают?
Ну я делаю).. И никто и ничто не запретит мне сделать запись нулевого размера)
Здравая логика должна была запретить) Ну и зачем, например?)
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
11.09.2015, 12:06
Цитата Сообщение от UI-Maker Посмотреть сообщение
видел классы без полей
Не мог ты их видеть)
Точнее мог не видеть.

Не по теме:

"Ты видишь суслика ? И я не вижу. А он есть.." (с) ДМБ



Удивись:

Delphi
1
2
3
4
5
6
7
8
9
type
  TMyClass = class
  end;
..
var
  ObjectOfMyClass: TMyClass;
  ObjectOfMyClass := TMyClass.Create;
  Showmessage(IntToStr(TMyClass.InstanceSize));
  Showmessage(IntToStr(ObjectOfMyClass.InstanceSize));
Цитата Сообщение от UI-Maker Посмотреть сообщение
В объекте кода нет. А в классе есть
Ни в объекте ни в классе кода нет.

Удивись:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
type
  TMyClass = class
    procedure MyMethod;
  end;
..
procedure TMyClass.MyMethod;
begin
  ShowMessage('MyMethod');
end;
..
var
  ObjectOfMyClass: TMyClass;
..
  ObjectOfMyClass := TMyClass.Create;
  ObjectOfMyClass.MyMethod;
 
  Showmessage(IntToStr(TMyClass.InstanceSize));
  Showmessage(IntToStr(ObjectOfMyClass.InstanceSize));
Цитата Сообщение от UI-Maker Посмотреть сообщение
Здравая логика должна была запретить) Ну и зачем, например?)
Да по барабану зачем !).. Мало ли какая мне блажь втемяшится)

Речь не о здравости моей логике, а о здравости логики разработчиков компилятора, не запрещающих использование записи и "пустой" записи в частности)

А логика эта у них здравая, поверь уж)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.09.2015, 12:06
Помогаю со студенческими работами здесь

Ошибка: Record, object or class required...
procedure noname; var bufer,text:string; begin text:='word'; while true do begin bufer:=Clipboard.asText; ...

Ошибка: Record, object or class type required
на код вызова второстепенной формы procedure TForm1.Button1Click(Sender: TObject); begin showmodal.form3; end; ругается...

[Ошибка] : Record, object or class type required
Выдает ошибку: Unit_Kartka.pas(134): Record, object or class type required Unit_Pilgu.pas(29): Could not compile used unit...

Ошибка: record, object or class type required
Вод полный код окна Form1: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,...

E2018 Record, object or class type required
Есть глобальный динамический массив указателей на record type FigureOtr = record CoordX1 : integer; CoordX2 : integer;...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru