Имеем код:
Код:
TItem = class (TObject)
private
fName:string;
fID:integer;
public
Property Name:string read fName write fName;
Property ID:integer read fID write fID;
end;
TGroup = class (TObjectList)
// Реализован список объектов типа TItem
Procedure AppendItem(aName:string; aID:integer);// создает новый элемент списка
end;
...
var
l1,l2:TGroup;
begin
l1:=TGroup.create;
l1.AppendItem('qwe1',1);
l1.AppendItem('qwe2',2);
l1.AppendItem('qwe3',3);
l2:=TGroup.Create;
l2.AppendItem('qaz1',101);
l2.Add(l1[0]);
...
l1.delete(0);
И после этого у элемента l2[1] поле Name пустое, хотя сам объект присутствует и поле ID у него нормальное.
Если string поменять на ShortString, то Name не обнуляется.
Хотелось-бы понять почему так происходит и что делать с уже написанным кодом.