Показать сообщение отдельно
  #1  
Старый 20.03.2016, 15:57
Leks Leks вне форума
Прохожий
 
Регистрация: 17.01.2011
Сообщения: 2
Версия Delphi: XE6
Репутация: 10
По умолчанию Объясните поведение

Имеем код:
Код:
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 не обнуляется.
Хотелось-бы понять почему так происходит и что делать с уже написанным кодом.
Ответить с цитированием