Ir para conteúdo
Fórum Script Brasil
  • 0

Classes


Guest Fioravante

Pergunta

Guest Fioravante

Olá pessoal estou começando a mexer com classes e gostaria de saber como corrigir um erro.

Por favor se alguém tiver uma dica,eu ficaria grato.

Ai vai o codigo da unit:

unit formas;

interface

uses extctrls,Graphics;

type

TFigura=class(Tobject)

public

color:Tcolor;

constructor create;virtual;

procedure desenhar(canvas:Tcanvas);virtual;abstract;

procedure apagar(canvas:Tcanvas);virtual;abstract;

end;

TRetangulo=class(Tfigura)

private

x1,y1,x2,y2:integer;

public

constructor create;virtual;

procedure setposition(ax1,ay1,ax2,ay2:integer);

function area:integer;

destructor destroy;override;

procedure desenhar(canvas:Tcanvas);override;

procedure apagar(canvas:Tcanvas);override;

end;

TQuadrado=class(Tretangulo)

private aresta:integer;

public

constructor create;override;

procedure setquadrado(ax1,ay1,aresta:integer);

end;

implementation

constructor TFigura.create;

begin

color:=Clblack;

end;

constructor Tretangulo.create;

begin

x1:=0;

x2:=0;

y1:=0;

y2:=0;

end;

procedure Tretangulo.setposition(ax1,ay1,ax2,ay2:integer);

begin

x1:=ax1;

x2:=ax2;

y1:=ay1;

y2:=ay2;

end;

function Tretangulo.area:integer;

begin

result:=(x2-x1)*(y2-y1);

end;

destructor Tretangulo.destroy;

begin

x1:=0;

x2:=0;

y1:=0;

y2:=0;

inherited destroy;

end;

procedure TRetangulo.desenhar(canvas:TCanvas);

begin

canvas.pen.color:=color;

canvas.moveto(x1,y1); //posiciona a caneta

canvas.lineto(x2,y1); //faz uma linha

canvas.lineto(x1,y2);

canvas.lineto(x1,y1);

end;

procedure TRetangulo.apagar(canvas:Tcanvas);

var cor:Tcolor;

begin

cor:=canvas.pixels[1,1];

canvas.pen.color:=cor;

canvas.moveto(x1,y1); //posiciona a caneta

canvas.lineto(x2,y1); //faz uma linha

canvas.lineto(x1,y2);

canvas.lineto(x1,y1);

end;

constructor TQuadrado.create;

begin

inherited create;

aresta:=0;

end;

procedure TQuadrado.setquadrado(ax1,ay1,arest:integer);//erro neste ponto

begin

aresta:=arest;

setposition(ax1,ay1,ax1+aresta,ay1+aresta);

end;

end.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Guest Fioravante

[Warning] formas.pas(20): Method 'create' hides virtual method of base type 'TFigura'

[Error] formas.pas(99): Declaration of 'setquadrado' differs from previous declaration

[Error] formas.pas(101): Undeclared identifier: 'arest'

[Fatal Error] desenhando.dpr(6): Could not compile used unit 'formas.pas'

Gera estes erros.

Obrigado pela resposta.

Link para o comentário
Compartilhar em outros sites

  • 0

Olhe a prototipação:

procedure setquadrado(ax1,ay1,aresta:integer);

E agora olhe a declaração:

procedure TQuadrado.setquadrado(ax1,ay1,arest:integer);

Ao que parece, diferentemente de outras linguagens, onde o que importa são os tipos dos parâmetros, Delphi se preocupa também com os nomes.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...