我创建了一个动态记录数组,使用此 actionexecute 方法进行扩展:
procedure TForm1.AddTeamActionExecute(Sender: TObject);
Var
c : integer;
begin
c := length(PrjRecArray);
PrjRecArray[c].tmpLoadPrjRec (true, 'Team', 'Big Building', '123 Main Street' ,'',
'Somewhere', 'Ohio','43210', '555-1234', 'Bob', 'Big Cheese', '555-0123', 'bob@gmail.com');
PrjSg.Cells[0,PrjSg.RowCount-1] := (PrjRecArray[c].Team);
PrjSg.Cells[1,PrjSg.rowcount-1] := (PrjRecArray[c].Name);
PrjSg.Cells[2,PrjSg.rowcount-1] := (PrjRecArray[c].addr1);
PrjSg.Cells[3,PrjSg.rowcount-1] := (PrjRecArray[c].addr2);
PrjSg.Cells[4,PrjSg.rowcount-1] := (PrjRecArray[c].city);
PrjSg.Cells[5,PrjSg.rowcount-1] := (PrjRecArray[c].state);
PrjSg.Cells[6,PrjSg.rowcount-1] := (PrjRecArray[c].zip);
PrjSg.Cells[7,PrjSg.rowcount-1] := (PrjRecArray[c].phone);
PrjSg.Cells[8,PrjSg.rowcount-1] := (PrjRecArray[c].contact);
PrjSg.Cells[9,PrjSg.rowcount-1] := (PrjRecArray[c].title);
PrjSg.Cells[10,PrjSg.rowcount-1] := (PrjRecArray[c].conPhone);
PrjSg.Cells[11,PrjSg.rowcount-1] := (PrjRecArray[c].email);
PrjSg.RowCount := PrjSg.RowCount + 1;
Revised(true);
showmessage ('PrSG Rows = ' + inttostr (PrjSg.RowCount));
c := c + 1;
SetLength (PrjRecArray, c);
showmessage ('PrjRecArray Rows = ' + inttostr (length(PrjRecArray)));
end;
该数组称为在单元 ( ) 中声明的 PrjRecArray,PrjRecArray : Array of TPrjRec;
并且不会以其他方式初始化。PrjSg 是包含在表单中的 tstringgrid,用于显示记录。
当我使用 AddTeamActionExecute 添加更多记录时,stringgrid 的大小会继续正确增加。然而,虽然 PrjRecordArray 正确扩展为四个记录,但程序显然在第五次迭代中在设置长度行处失败。执行挂起并且从不显示第二个显示消息框。
我错过了正确使用动态数组的一些步骤吗?