Доброго времени суток, уважаемые программисты.
Исходная программа:
program primer_2_3;
uses crt;
type
Stroka=object
Xt, Yt: integer;
Text: string;
procedure Init(aXt, aYt:integer; aText: string);
procedure Print;
end;
procedure Stroka.Init;
begin
Xt:=aXt;
Yt:=aYt;
Text:=aText;
end;
procedure Stroka.Print;
begin
GotoXY(Xt,Yt);
writeln(Text);
end;
type
StrInWin=object
X1,Y1,X2,Y2,Color: integer;
Str: Stroka;
procedure Init(aX1,aY1,aX2,aY2,aColor:integer; aStr: Stroka);
procedure MakeWin;
end;
procedure StrInWin.Init;
begin
X1:=aX1;
Y1:=aY1;
X2:=aX2;
Y2:=aY2;
Color:=aColor;
Str:=aStr;
end;
procedure StrInWin.MakeWin;
begin
Window(X1,Y1,X2,Y2);
TextBackGround(Color);
clrScr;
end;
var
ObWin: StrInWin;
ObStr: Stroka;
Begin
ObStr.Init(1,1,'soobsenie');
ObWin.Init(8,4,32,20,4,ObStr);
ObWin.MakeWin;
ObWin.Str.Print;
End.Она выводит цветную строку в цветном окне.
Задание:
Преобразовать класс Stroka в класс Stroka1 так, чтобы он мог выводить несколько цветных строк (ввести новые поля и переопределить методы).
Вот моя робкая попытка это сделать:
program primer_2_3;
uses crt;
type
Stroka=object
Xt, Yt: integer;
Text: string;
procedure Init(aXt, aYt:integer; aText: string);
procedure Print;
end;
procedure Stroka.Init;
begin
Xt:=aXt;
Yt:=aYt;
Text:=aText;
end;
procedure Stroka.Print;
begin
GotoXY(Xt,Yt);
writeln(Text);
end;
type
Stroka1=object
N: integer;
procedure Init(aXt, aYt:integer; aText: string; aN: integer);
procedure Print;
end;
procedure Stroka1.Init;
begin
Stroka1.Init(aXt,aYt,aText,aN);
N:=aN;
end;
procedure Stroka1.Print;
var
i: integer;
begin
for i:=1 to N do
Stroka.Print;
end;
type
StrInWin=object
X1,Y1,X2,Y2,Color: integer;
Str: Stroka1;
procedure Init(aX1,aY1,aX2,aY2,aColor:integer; aStr: Stroka1);
procedure MakeWin;
end;
procedure StrInWin.Init;
begin
X1:=aX1;
Y1:=aY1;
X2:=aX2;
Y2:=aY2;
Color:=aColor;
Str:=aStr;
end;
procedure StrInWin.MakeWin;
begin
Window(X1,Y1,X2,Y2);
TextBackGround(Color);
clrScr;
end;
var
ObWin: StrInWin;
ObStr: Stroka1;
Begin
ObStr.Init(1,1,'soobsenie',5);
ObWin.Init(8,4,32,20,4,ObStr);
ObWin.MakeWin;
ObWin.Str.Print;
End.Но Паскаль выдает ошибку "Invalid procedure or function reference" и подсвечивает строчку выделенную жирным подчеркнутым шрифтом в следующем фрагменте:
procedure Stroka1.Print;
var
i: integer;
begin
for i:=1 to N do
begin
Stroka.Print;
end;
end;
Что я делаю не так?
З.Ы.: ну и чтобы вы повеселились - это задача по объектнно-ориентированному программированию 2 курс университета.
