Class i array laver access violation
Jeg leger med classes i øjeblikket... jeg har nu lavet et array [1..5] of TLastvogn, som er en class. Men når jeg bruger en for-løkke i FormCreate'n laver den en access violation. Kode:MainU:
---------------------------------------------
unit MainU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ClassU, StdCtrls, Spin;
const
AntalBiler = 5;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
SpinEdit1: TSpinEdit;
Label3: TLabel;
Edit1: TSpinEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Lastvogn : TLastvogn;
Lastbiler : array [1..AntalBiler] of TLastvogn;
AktuelLastvogn : Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i : Integer;
begin
Lastvogn := TLastvogn.Create;
Lastvogn := TLastvogn.Create;
Lastvogn.KasseVaegt := 5;
AktuelLastvogn := SpinEdit1.Value;
for i := 1 to AntalBiler do
begin
Lastbiler[i].KasseVaegt := 5; // Her laver den en AccessViolation
Lastbiler[i].AntalKasser := 0;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
tmp : Integer;
begin
tmp := Edit1.Value;
Lastvogn.AntalKasser := tmp;
Label2.Caption := IntToStr(Lastvogn.Vaegt);
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
AktuelLastvogn := SpinEdit1.Value;
Edit1.Value := Lastbiler[AktuelLastvogn].AntalKasser;
end;
end.
ClassU:
---------------------------------------------
unit ClassU;
interface
type
TLastvogn = class(TObject)
private
FAntalKasser : Integer;
FKasseVaegt : Integer;
function GetVaegt : Integer;
public
property AntalKasser : Integer
read FAntalKasser
write FAntalKasser;
property KasseVaegt : Integer
read FKasseVaegt
write FKasseVaegt;
property Vaegt : Integer
read GetVaegt;
end;
implementation
function TLastvogn.GetVaegt : Integer;
begin
Result := KasseVaegt * AntalKasser;
end;
end.
