Einzelnen Beitrag anzeigen

Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#1

Zugriffsverletzung bei Constructor.Create

  Alt 23. Mär 2008, 13:34
Hey, ich wollte mich mal ein bisschen mit Klassen usw. beschäftigen, und hier ist gleich das ertste Problem: Ich habe hier zwei Klassen:
Delphi-Quellcode:
type
  TPixels = class
  R, G, B : Byte;
  public
    constructor Create;
  end;

type
  TPixelField = class
  Pixels : Array of Array of TPixels;
  public
    constructor Create(Width, Height : Integer);
  end;
Das zweite ist ein Feld und hat die Eigenschaft Pixels, ein zweidimensionales Array of TPixels, jedes TPixel hat die Werte R, G und B. So weit, so gut.

Jetzt erstelle ich das Pixelfield:
Delphi-Quellcode:
constructor TPixelField.Create(Width, Height : Integer);
Var i : Integer;
begin
  SetLength(Pixels, Width);
  for i := low(Pixels) to high(Pixels) do
    SetLength(Pixels[i], Height);
end;
Auch das klappt ohne Probleme. Jetzt will ich aber auch die TPixels erstellen:
Delphi-Quellcode:
Constructor TPixels.Create;
begin
  R:=0;//<-- Hir kommt die Zugriffsverletzung, auch wenn hier nichts steht
  G:=0;
  B:=0;
end;

////

procedure TForm1.Button2Click(Sender: TObject);
var i, j : Integer;
    Field : TPixelfield;
begin
  Field:=TPixelField.Create(10,10);
  with Field do
  begin
    for i:=low(Pixels) to high(Pixels) do
      for j:=low(Pixels[i]) to high(Pixels[i]) do
      begin
        Pixels[i,j].Create;
      end;
  end;
end;
Aber da gibts ne Zugriffsverletzung (EAccesViolation). Genauer gesagt kommt die im Create von TPixels in der ersten Zeile. Aber auch wenn ich TPixels.Create leer lasse, kommt die Zugriffsverletzung. Was mache ich falsch?

Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat