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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2009, 16:38   #1
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
Стрелка TurboPascal: объекты и классы

Доброго времени суток, уважаемые программисты.
Исходная программа:
Код:
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
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;
     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
     begin
     Stroka.Print;
     end;
     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" и подсвечивает строчку Stroka.Print;
Что я делаю не так?
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Старый 28.10.2009, 17:20   #2
ulala
Пользователь
 
Аватар для ulala
 
Регистрация: 18.09.2009
Сообщений: 62
По умолчанию

procedure Stroka1.Print;
var
i: integer;
begin
for i:=1 to N do
begin
Stroka.Print;
end;
end;
вот этот фрагмент он подсвечивает и выдаёт "инвалид"
Ну,как?.. Твоё коллективное сознание уловило Message или ты по-прежнему считаешь себя Избранным?..
ulala вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TurboPascal - help! Lexone Помощь студентам 5 29.03.2009 15:38
Русские буквы в TurboPascal DartMrakkk Паскаль, Turbo Pascal, PascalABC.NET 4 10.03.2009 21:51
Помогите по TurboPascal Vetal07 Помощь студентам 3 11.11.2008 18:51