Program primer;
Type tPredoc=class
Name:string; {поле данных объекта}
Procedure Declaration; {объявление методов объекта}
Procedure MyName;
End;
const ded : tPredoc = ( Name : 'Петров Николай Иванович');
{раздел описания процедур и функций, где обязательно должны быть написаны все объявленные в объектных типах методы}
Procedure tPredoc.Declaration ;
{реализация метода объекта}
begin
writeln ('Я - предок!');
end ;
Procedure tPredoc.MyName ;
{реализация метода объекта}
begin
writeln('Я -', Name);
end;
BEGIN
ded.Declaration ; {вызов методов общего предка}
ded.МуName;
END.
где нужна точка с запятой?
Но там она и не нужна. Помогите советом в чем ошибка?
Код:
Program primer;
Type tPredoc=object {В ЭТОЙ СТРОКЕ ОШИБКА}
Name:string; {поле данных объекта}
Procedure Declaration; {объявление методов объекта}
Procedure MyName;
End;
tуре tSon= оbject(tPredoc) {Тип, наследующий tPredoc }
procedure Declaration; {перекрытие методов предка}
procedure МуName(Predoc : tPredoc);
end ;
tуре tGrandSon=object(tSon) {Тип, наследующий tSon}
procedure Declaration ; {перекрытие методов предка}
end ;
const ded : tPredoc = ( Name : "Петров Николай Иванович");
otec : tSon = ( Name : "Петров Сергей Николаевич");
vnuk : tGrandSon = ( Name : "Петров Олег Сергеевич");
{раздел описания процедур и функций, где обязательно должны быть написаны все объявленные в объектных типах методы}
Procedure tPredoc.Declaration ;
{реализация метода объекта}
begin
writeln ('Я - предок!');
end ;
Procedure tPredoc.MyName ;
{реализация метода объекта}
begin
writeln('Я -', Name);
end;
BEGIN
ded.Declaration ; {вызов методов общего предка}
ded.МуName;
writeln;
otec.Declaration;
otec.MyName(ded); { вызов методов объекта otec типа tSon}
writeln;
vnuk.Declaration; { вызов методов объекта vnuk типа tGrandSon}
vnuk.MyName ( otec );
END.
Type tPredoc=object {В ЭТОЙ СТРОКЕ ОШИБКА}
Name:string; {поле данных объекта}
Procedure Declaration; {объявление методов объекта}
Procedure MyName;
End;
tуре tSon= оbject(tPredoc) {Тип, наследующий tPredoc }
procedure Declaration; {перекрытие методов предка}
procedure МуName(Predoc : tPredoc);
end ;
tуре tGrandSon=object(tSon) {Тип, наследующий tSon}
procedure Declaration ; {перекрытие методов предка}
end ;
const ded : tPredoc = ( Name : "Петров Николай Иванович");
otec : tSon = ( Name : "Петров Сергей Николаевич");
vnuk : tGrandSon = ( Name : "Петров Олег Сергеевич");
{раздел описания процедур и функций, где обязательно должны быть написаны все объявленные в объектных типах методы}
Procedure tPredoc.Declaration ;
{реализация метода объекта}
begin
writeln ('Я - предок!');
end ;
Procedure tPredoc.MyName ;
{реализация метода объекта}
begin
writeln('Я -', Name);
end;
BEGIN
ded.Declaration ; {вызов методов общего предка}
ded.МуName;
writeln;
otec.Declaration;
otec.MyName(ded); { вызов методов объекта otec типа tSon}
writeln;
vnuk.Declaration; { вызов методов объекта vnuk типа tGrandSon}
vnuk.MyName ( otec );
END.
Попробуйте поставить точку с запятой, что-бы отделить секцию объявления типов во второй строке.
Не прокатит такой трюк
Код:
type
TPredoc = class
Name : String; {поле данных объекта}
Procedure Declaration; virtual; {объявление методов объекта}
Procedure MyName;
end;
TSon = class(TPredoc)
procedure Declaration; override; {перекрытие методов предка}
end;
TPredoc = class
Name : String; {поле данных объекта}
Procedure Declaration; virtual; {объявление методов объекта}
Procedure MyName;
end;
TSon = class(TPredoc)
procedure Declaration; override; {перекрытие методов предка}
end;
Я упростил программу до такого программного кода. НО теперь возникает ошибка в типизированной константе:ОШИБКА ПРЕОБРАЗОВАНИЯ ТИПОВ. Не подскажете почему?
Код:
const ded : tPredoc = ( Name : 'Петров Николай Иванович');
Код:
var
ded : tPredoc;
begin
ded := tPredoc.Create;
try
ded.Name = 'Петров Николай Иванович';
ded.Declaration;
ded.MyName;
finally
ded.Free;
end;
end.
ded : tPredoc;
begin
ded := tPredoc.Create;
try
ded.Name = 'Петров Николай Иванович';
ded.Declaration;
ded.MyName;
finally
ded.Free;
end;
end.