Einzelnen Beitrag anzeigen

Benutzerbild von Lee500
Lee500

Registriert seit: 18. Sep 2006
39 Beiträge
 
Delphi 2010 Architect
 
#1

EAccessViolation beim aufrufen der eigenen Klasse

  Alt 3. Mär 2008, 15:38
Folgendes Problem:

In der MainGame.pas

Delphi-Quellcode:
unit MainGame;

interface

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

type
  TMain = class(TForm)
    PaintBox: TPaintBox;
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Main: TMain;
  Painter: TPaint;

implementation

{$R *.dfm}

procedure TMain.FormActivate(Sender: TObject);
begin
  Main.Width := Screen.Width;
  Main.Height := Screen.Height;
  Painter := TPaint.Create(PaintBox);
end;

procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Painter.Destroy;
end;

end.
wird meine PainterKlasse (TPaint) erstmal erzeugt.
Daraufhin bekomme ich beim erzeugen der Klasse eine EAccessViolation.

Hier der Code der Painterklasse:

Delphi-Quellcode:
unit Paint;

interface
uses Graphics, Classes, ExtCtrls;

type
  TPaint = class
  private
    Colors: array [0..7] of array [0..7] of Boolean;
    Size: Integer;
    PenBlack, PenWhite: TPen;
    BrushBlack, BrushWhite: TBrush;
  protected

  public
    constructor Create(PaintBox: TPaintBox);
    destructor Destroy();
    procedure Paint(C: TCanvas);
  end;

implementation

uses MainGame;

 constructor TPaint.Create(PaintBox: TPaintBox);
 var
   X,Y: Integer;
   Bool: Boolean;
 begin
   inherited Create();
   self.Size := PaintBox.Height div 8;
   self.PenBlack.Color := clblack;
   self.PenWhite.Color := clwhite;
   self.PenBlack.Width := 1;
   self.PenWhite.Width := 1;
   self.BrushBlack.Color := clBlack;
   self.BrushWhite.Color := clWhite;
   Bool := true;
   for X := 0 to Length(Colors)-1 do
   begin
     for Y := 0 to Length(Colors[X])-1 do
     begin
       Colors[X,Y] := Bool;
       if Bool then
       begin
         Bool := false;
       end else
       begin
         Bool := true;
       end;
     end;
   end;
 end;

 destructor TPaint.Destroy();
 begin
 inherited Destroy;
   self.Free;
 end;

 procedure TPaint.Paint(C: TCanvas);
 var
   X,Y: Integer;
 begin
   for X := 0 to Length(self.Colors)-1 do
   begin
     for Y := 0 to Length(self.Colors[X])-1 do
     begin
       if self.Colors[X,Y] then
       begin
         C.Pen := self.PenWhite;
         C.Brush := self.BrushWhite;
       end else
       begin
         C.Pen := self.PenBlack;
         C.Brush :=self.BrushBlack;
       end;
       C.Rectangle(Rect(X*Size,Y*Size,(X+1)*Size,(Y+1)*Size));
     end;
   end;
 end;

end.
Ich hab auch schon gegoogelt udn auch die Foren Suche benutzt, habe jedoch nichts passendes gefunden. Ich hoffe ihr könnt mir helfen. Schonma im vorraus Danke
  Mit Zitat antworten Zitat