Einzelnen Beitrag anzeigen

bastischo

Registriert seit: 12. Jan 2006
Ort: Planet Erde
40 Beiträge
 
Delphi 7 Personal
 
#1

Ein mir unverständliches Problem ist aufegtaucht.

  Alt 10. Mai 2006, 15:02
Ich weiß, dass der titel doof ist, aber ich aknnes nciht besser beschreiben.
Habe ein programm, in dem sich ein Ball über Die Form bewegen soll, indem er sihc immer wieder neu löscht und zeichnet.
Beim kompilieren hab cih noch keine Fehler, aber an den markierten stellen gibt es dann immer access violations.
Delphi-Quellcode:
unit UHA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TBall = class
    x,y,r,vx,vy:integer;
    color:TColor;
    procedure init(aX,aY,aVX,aVY,aR:Integer;acolor:TColor);
    procedure move;
    end;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    PaintBox1: TPaintBox;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Basketball:TBall;
implementation

{$R *.dfm}


procedure Tball.move;
begin
    Form1.PaintBox1.Canvas.Brush.Color:=clwhite;
    Form1.PaintBox1.Canvas.Pen.color:=clwhite;
    Form1.PaintBox1.Canvas.Ellipse(x-r,y-r,x+r,y+r); //<-- und hier.danach isses immer wieder hier bis ich neu starte
    x:=x+vx;
    y:=y+vy;
    Form1.PaintBox1.Canvas.brush.Color:=color;
    Form1.PaintBox1.Canvas.pen.color:=color;
    Form1.PaintBox1.Canvas.ellipse(x-r,y-r,x+r,y+r);
end;

procedure TBall.init(aX,aY,aVX,aVY,aR:Integer;acolor:TColor);
  begin
  Create;
  x:=aX;
  y:=aY;
  vx:=aVX;
  vy:=aVY;
  r:=aR;
  color:=acolor;
  end;



procedure TForm1.Timer1Timer(Sender: TObject);// Intervall=5
begin
Basketball.move;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Basketball.init(50,50,3,-4,10,RGB(255,255,0));
end; //<---HIER zuerst

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Basketball.Free;
end;


end.
Ich komm nun seit ein paar Stunden einfach nicht darauf, was falsch ist.
Bitte helft einem armen kleinen Jungen
  Mit Zitat antworten Zitat