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