<p><pre>
TTextRec = record
name : String;
von : Integer;
bis : Integer;
feld : TField;
wert : String;
write : Boolean;
end;
TTextArray = Array of TTextrec;
TButtonRec = Record
name : String;
importCB : TCheckBox;
edit : Boolean;
editCB : TCheckBox;
startBtn : TSpeedButton;
lastDT : TLabel;
impRec : Array of TTextRec;
end;
</pre><p>
Soweit, so gut, jetzt möchte ich gerne bei Übergabe eines Statischen Arrays ein Dynamisches erzeugen:<p><pre>
procedure initTextArray(const tt: TAdsTable; const tVon: Array of TTextRec);
var i, x : Integer;
begin
setLength(impArray, High(tVon)+1);
x := 0;
for i := 0 to High(tVon) do begin
Assert(tVon[i].name <> '', 'initTextArray: '+tt.TableName+', Eintrag '+inttostr(i)+' leerer Name');
Assert(x < tVon[i].von, 'initTextArray: '+tt.TableName+', Eintrag '+inttostr(i)+' von < bis davor');
Assert(tVon[i].bis >= tVon[i].von, 'initTextArray: '+tt.TableName+', Eintrag '+inttostr(i)+' von: '+inttostr(tVon[i].von)+' bis: '+inttostr(tVon[i].bis));
impArray[i].name := tVon[i].name;
impArray[i].von := tVon[i].von;
impArray[i].bis := tVon[i].bis;
impArray[i].feld := tt.FindField(impArray[i].name);
impArray[i].wert := '';
impArray[i].write := true;
x := impArray[i].bis;
Assert(impArray[i].feld <> nil, 'initTextArray: '+tt.TableName+', Feld '+tVon[i].name+' nicht gefunden');
// Assert(tVon[i].bis - tVon[i].von +1 <= impArray[i].feld.DataSize, 'initTextArray: '+tt.TableName+', Feld '+tVon[i].name+' zu klein');
end;
end;
</pre></p>
Mit dem Aufruf initTextArray(stamm, stammDef);
klappt das wunderbar, warum funktioniert dan aber die Zuweisung mainButtons[0].impRec := stammDef; nicht, immerhin ist der Eintrag in diesem Record (TButtonRec) genauso wie obiger 2ter Procedur Parameter als Array of TTextRec deklariert, bei der Zuweisung meckert der Compiler aber über inkompatible Typen.
Comment