Delphi-Quellcode:
{ TMyClassB }
constructor TMyClassA.Create;
var
I: Integer;
begin
System.SetLength(FRecords, Length(RECS));
for I := System.Low(RECS) to System.High(RECS) do
System.Move(RECS[I], FRecords[I], SizeOf(RECS[I]));
end;
{ TMyClassB }
constructor TMyClassB.Create;
var
I: Integer;
begin
System.SetLength(FRecords, Length(RECS));
for I := System.Low(RECS) to System.High(RECS) do
System.Move(RECS[I], FRecords[I], SizeOf(RECS[I]));
end;
Genau DAS wollte ich eigentlich vermeiden. Erstens weils wieder eine Schleife wäre, zweitens weil ich dann Copy&Paste-Programmierung hätte in jeder Ableitung von TMyClass.
Deklarier TMyRecords mal so:
TMyRecords = Array[0..0] of TMyRecord;
Ein einfacher Trick um die unterschiedlichen Arraytypen anzugleichen ist die Deklaration so zu ändern:
Delphi-Quellcode:
type
TMyRecords = array[0..100] of TMyRecord;
In beiden Fällen erhalte ich nun Kompilerfehler:
Delphi-Quellcode:
TMyClassB = class(TMyClass)
strict private const
RECS: array[0..1] of TMyRecord = (
(A: 1; B: 2; C: 3),
(A: 4; B: 5; C: 6),
(A: 7; B: 8; C: 9)
); //<-- "Anzahl der Elemente (3) weicht von der Deklaration (2) ab"