1

Тема: незрозуміла помилка

вискакує помилка 7 Found 'private' but expected ';', я просто не розумію чого, вроді все правильно написав

Unit Figura;

interface

type
  tLocation = object
  private
    x, y: Integer;
  public
    constructor Init(InitX, InitY: Integer);
    procedure SetX(NewX: Integer);
    procedure SetY(NewY: Integer);
    function GetX: Integer;
    function GetY: Integer;
    procedure Draw; virtual;
    procedure Hide; virtual;
    procedure Move(NewX, NewY: Integer);
  end;

  tPoint = object(tLocation)
  private
    color: Word;
  public
    constructor Init(InitX, InitY: Integer; InitColor: Word);
    procedure Draw; virtual;
    procedure Hide; virtual;
  end;

  tLine = object(tPoint)
  private
    dx, dy: Integer;
  public
    constructor Init(InitX, InitY, InitX2, InitY2: Integer; InitColor: Word);
    procedure SetX2(NewX2: Integer);
    procedure SetY2(NewY2: Integer);
    function GetX2: Integer;
    function GetY2: Integer;
    procedure Draw; virtual;
    procedure Hide; virtual;
  end;

  tCircle = object(tPoint)
  private
    r: Word;
    fillColor: Word;
  public
    constructor Init(InitX, InitY: Integer; InitR, InitColor, 
      InitFillColor: Word);
    procedure SetR(NewR: Word);
    function GetR: Word;
    procedure Draw; virtual;
    procedure Hide; virtual;
  end;

  tPlane = object
  private
    cir: tCircle;
    lines: array[1..9] of tLine;
  public
    constructor Init(InitX, InitY: Integer); 
    procedure Draw;
    procedure Move(dx, dy: Integer);
  end;

implementation

Uses Crt, Graph;

constructor tLocation.Init(InitX, InitY: Integer);
begin
  x := InitX;
  y := InitY;
end;

procedure tLocation.SetX(NewX: Integer);
begin
  x := NewX;
end;

procedure tLocation.SetY(NewY: Integer);
begin
  y := NewY;
end;

function tLocation.GetX;
begin
  GetX := x;
end;

function tLocation.GetY;
begin
  GetY := y;
end;

procedure tLocation.Draw;
begin
end;

procedure tLocation.Hide;
begin
end;

procedure tLocation.Move(NewX, NewY: Integer);
begin
  Hide;
  x := NewX;
  y := NewY;
  Draw;
end;

constructor tPoint.Init(InitX, InitY: Integer; InitColor: Word);
begin
  tLocation.Init(InitX, InitY);
  color := InitColor;
end;

procedure tPoint.Draw;
begin
  PutPixel(x, y, color);
end;

procedure tPoint.Hide;
begin
  PutPixel(x, y, GetBkColor);
end;

constructor tLine.Init(InitX, InitY, InitX2, InitY2: Integer; 
  InitColor: Word);
begin
  tPoint.Init(InitX, InitY, InitColor);
  dx := InitX2 - x;
  dy := InitY2 - y;
end;

procedure tLine.SetX2(NewX2: Integer);
begin
  dx := NewX2 - x;
end;

procedure tLine.SetY2(NewY2: Integer);
begin
  dy := NewY2 - y;
end;

function tLine.GetX2: Integer;
begin
  GetX2 := x + dx;
end;

function tLine.GetY2: Integer;
begin
  GetY2 := y + dy;
end;

procedure tLine.Draw;
begin
  SetColor(color);
  Line(x, y, x + dx, y + dy);
end;

procedure tLine.Hide;
begin
  SetColor(GetBkColor);
  Line(x, y, x + dx, y + dy);
end;

constructor tCircle.Init(InitX, InitY: Integer; InitR, InitColor, 
  InitFillColor: Word);
begin
  tPoint.Init(InitX, InitY, InitColor);
  r := InitR;
  fillColor := InitFillColor;
end;

procedure tCircle.SetR(NewR: Word);
begin
  r := NewR;
end;

function tCircle.GetR: Word;
begin
  GetR := r;
end;

procedure tCircle.Draw;
begin
  SetColor(color);
  Circle(x, y, r);
  SetFillStyle(SolidFill, fillColor);
  FloodFill(x, y, color);
end;

procedure tCircle.Hide;
begin
  SetFillStyle(SolidFill, GetBkColor);
  FloodFill(x, y, color);
  SetColor(GetBkColor);
  Circle(x, y, r);
end;

constructor tPlane.Init(InitX, InitY: Integer);
begin
  cir.Init(InitX + 38, InitY + 7, 3, 9, 1);
  lines[1].Init(InitX, InitY, InitX + 45, InitY, 1);
  lines[2].Init(InitX + 45, InitY, InitX + 60, InitY + 7, 4);
  lines[3].Init(InitX + 60, InitY + 7, InitX + 45, InitY + 14, 4);
  lines[4].Init(InitX + 45, InitY + 14, InitX, InitY + 14, 1);
  lines[5].Init(InitX, InitY + 14, InitX, InitY, 1);
  lines[6].Init(InitX, InitY, InitX - 7, InitY - 14, 1);
  lines[7].Init(InitX - 7, InitY - 14, InitX + 20, InitY, 1);
  lines[8].Init(InitX, InitY + 14, InitX - 7, InitY + 28, 1);
  lines[9].Init(InitX - 7, InitY + 28, InitX + 20, InitY + 14, 1);
end;

procedure tPlane.Draw;
var
  i: Integer;
begin
  cir.Draw;
  for i := 1 to 9 do
    lines[i].Draw;
end;

procedure tPlane.Move(dx, dy: Integer);
var
  x: Integer;
  y: Integer;
  i: Integer;
begin
  x := lines[1].GetX;
  y := lines[1].GetY;
  Inc(x, dx);
  if x < 10 then
    x := GetMaxX - 70
  else if x > GetMaxX - 70 then
    x := 10;
  Inc(y, dy);
  if y < 20 then
    y := GetMaxY - 30
  else if y > GetMaxY - 30 then
    y := 20;
  dx := x - lines[1].GetX;
  dy := y - lines[1].GetY;
  cir.Move(cir.GetX + dx, cir.GetY + dy);
  for i := 1 to 9 do
    lines[i].Move(lines[i].GetX + dx, lines[i].GetY + dy);
end;

end.

2

Re: незрозуміла помилка

...
tLocation = class
...
Подякували: varkon1

3

Re: незрозуміла помилка

shtyegor
Це у вас Паскаль чи Делфі, і яка версія?

4

Re: незрозуміла помилка

я так зрозумів цей чувак (чи учень чи студент) пробував використовувати ключове слово з Borland Object Pascal'ю в делфі. koala вже правильно підказав - просто треба використовувати ключове слово "class" з Делфі.

5

Re: незрозуміла помилка

Object працює по різному в різних версіях Делфі.