Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2011, 08:59   #1
Prontit
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 39
Стрелка Класс внутри класса

Добрый день!

Я только осваиваю тему создания классов, так что возможно вопрос будет глупый. Прежде чем его задавать поюзал гугл, но ничего толкового не нашел. А проблема глупая - у меня есть простой класс

Myclass = class(TObject)
i : integer;
s : string;
end;


хочу создать еще один класс, внутри этого, что-то вроде

Myclass = class(TObject)
i : integer;
s : string;
Myclass2 = class(TObject)
o : char;
end;
end;


но компилятор это не принимает, выдает ошибку

[DCC Error] Unit1.pas(23): E2029 ',' or ':' expected but '=' found

Работаю в RAD2010.
-------------------------------
буду очень благодарен если посоветуете хороший материал на эту тему
-------------------------------

Заранее благодарю!

Последний раз редактировалось Prontit; 06.10.2011 в 09:17.
Prontit вне форума Ответить с цитированием
Старый 06.10.2011, 09:50   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Необходимо опережающее объявление класса
Код:
TMyclass2 = class(TObject)
o : char; 
end;
TMyclass = class(TObject)
i : integer;
s : string;
Myclass2 :TmyClass2;
end;
Использование префикса Т рекомендуется при объявлении типов (классов в том числе)
phomm вне форума Ответить с цитированием
Старый 06.10.2011, 09:55   #3
Prontit
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 39
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
Необходимо опережающее объявление класса
Код:
TMyclass2 = class(TObject)
o : char; 
end;
TMyclass = class(TObject)
i : integer;
s : string;
Myclass2 :TmyClass2;
end;
Использование префикса Т рекомендуется при объявлении типов (классов в том числе)
Большое спасибо! Значит мне необходимо "отдельно" определить все классы, а потом вложить их друг в друга так как нужно, так и получится иерархия parent-cheld?
Prontit вне форума Ответить с цитированием
Старый 06.10.2011, 09:56   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
Myclass = class(TObject)
i : integer;
s : string;
Myclass2 : class(TObject)
o : char;
end;
end;
а вот так пройдет?!
с рекордами такое проходит, как будет с классами не знаю.
правилам языка вроде бы не противоречит.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.10.2011, 10:06   #5
Prontit
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 39
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
Myclass = class(TObject)
i : integer;
s : string;
Myclass2 : class(TObject)
o : char;
end;
end;
а вот так пройдет?!
с рекордами такое проходит, как будет с классами не знаю.
правилам языка вроде бы не противоречит.
сначала тоже так пытался, не принимает
Prontit вне форума Ответить с цитированием
Старый 06.10.2011, 10:08   #6
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
а вот так пройдет?!
[Error] Unit1.pas(14): Class, interface and object types only allowed in type section
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 06.10.2011, 11:37   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
а вот так пройдет?!
Цитата:
Сообщение от JUDAS Посмотреть сообщение
[Error] Unit1.pas(14): Class, interface and object types only allowed in type section
именно это я и хотел услышать, спасибо.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.10.2011, 13:33   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

ТС,в какой среде программируете?
Человек_Борща вне форума Ответить с цитированием
Старый 06.10.2011, 14:07   #9
Prontit
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
ТС,в какой среде программируете?
RAD Studio 2010
Prontit вне форума Ответить с цитированием
Старый 06.10.2011, 14:10   #10
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Может еще шаблоны введут RAD Studio 2010...
VintProg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменять приватные свойства одного класса внутри другого TwiX Общие вопросы Delphi 15 10.11.2010 20:40
Локальные хуки внутри класса Impuls1989 Общие вопросы Delphi 12 27.07.2010 20:47
передача типов из класса в класс badmfck Общие вопросы Delphi 10 24.05.2010 12:31
Перенос данных из класса в класс zexak Общие вопросы по Java, Java SE, Kotlin 2 27.02.2010 20:03
Создать класс(компонент) внутри компонента Deight Общие вопросы Delphi 6 21.12.2008 09:26