如何从另一个记录TList更新TList字段

时间:2019-12-18 17:16:42

标签: delphi tlist

我有以下列表

type
 PDetail = ^TDetail

 TDetail = record
   sId : String;
   sLname : String;
 end;

type
 PRegisters = ^TRegisters;

 TRegisters = record
  sId : String;
  sName : String;
  sTitle : String;
  tDetails : TList<PDetail>;
 end;

问题是,我无法更新tDetails: TList <PDetail>;,并尝试访问这些值之后,它为空。

我创建注册详细信息。

//Global Var
 Registers : TList;

procedure CreateDetails;
var
 reg : PDetail;
 Detail : TList<PDetail>;
begin

  Detail := TList<PDetail>.Create;

  reg := New(PDetail);
  reg^.sId := '01';
  reg^.sLame := 'name name';
  Detail.Add(reg);

  reg := New(PDetail);
  reg^.sId := '02';
  reg^.sLame := 'name2 name2';
  Detail.Add(reg);

  reg := New(PDetail);
  reg^.sId := '03';
  reg^.sLame := 'name3 name3';
  Detail.Add(reg);

  UpdateDetails(Detail);
end;

使用子列表更新主列表

procedure UpdateDetails(_newDet : TList<PDetail>);
var
 _aReg : PRegisters;
begin
  _aReg := Registers.Items[3];
  _aReg.sId := 'new value';
  _aReg.sName := 'new value'
  _aReg.sTitle := 'new value'
  _aReg.tDetails : _newDet;
  //Registers.Items[3] := _aReg; //not work
end;

检查新值。

procedure CheckValues;
var
 _aReg : PRegisters;
 test : String;
begin
  _aReg := Registers.Items[3];
  test := _aReg.sId;
  test := _aReg.sName;
  test := _aReg.sTitle;
  //_aReg.tDetails.Count = 0 no records...
end;

为什么主注册表中的TList字段未使用创建的子列表进行更新?怎么了?

0 个答案:

没有答案