thank you all in advance,
Type TypeA=record
some_int:integer;
some_real:real;
end;
Type TypeB = class(TComponent)
private
PrivateA: array of TypeA;
function GetA(index:integer):TypeA;
procedure SetA(index:integer;value:TypeA);
public
procedure SetLengthA(i:integer);
property A[i:integer]:TypeA read GetA write SetA;
end;
procedure TypeB.SetLengthA(i:integer);
begin
setlength(PrivateA,i);
end;
function TypeB.GetA(index:integer):TypeA;
begin
result:=PrivateA[index];
end;
procedure TypeB.SetA(index:integer;value:TypeA);
begin
PrivateA[index]:=value;
end;
procedure TForm1.Button1Click(Sender: TObject);
var B: TypeB;
begin
B:=TypeB.create(nil);
B.SetLengthA(3);
B.A[1].some_int:=5; // <----------- this causes the error !
end;
1. use pointer to record TTypeA like
type
PTypeA = ^TTypeA;
2. use "array of PTypeA" instead of "array of TTypeA"
3. don't forget to allocate memory for all elements of that array