Форум: "Начинающим";
Текущий архив: 2017.04.23;
Скачать: [xml.tar.bz2];
Внизкопировать TObjectList в TObjectList Найти похожие ветки
← →
Цукор5 (2015-09-03 15:33) [0]Добрый день, всем.
Подскажите, что я делаю не так?
var Obj1,Obj2:TObjectList;
I:Integer;
begin
Obj1:=TObjectList.Create;
try
Obj1.Add(TStringList.Create);
for I:=0 to 5 do TStrings(Obj1.Items[0]).Add("hello"+IntToStr(I));
Obj2:=TObjectList.Create;
try
Obj2.Assign(Obj1);
Memo1.Lines.Add(IntToStr(Obj2.Count))
finally
Obj2.Free;
end;
finally
Obj1.Free;
end;
end;
← →
RWolf © (2015-09-03 15:41) [1]ObjectList по умолчанию владеет объектами, а Assign не создаёт копии содержимого, оба списка ссылаются на одни и те же стринглисты.
← →
Цукор5 (2015-09-03 15:48) [2]Т.е. простыми словами, уничтожать нужно только один. Я правильно понял?
Хорошо, пусть так. Не будет ли утечек при таком подходе? Что, если один из TObjectList находится в другом потоке? Как тут быть?
← →
RWolf © (2015-09-03 15:58) [3]> Не будет ли утечек
Будет, конечно. Нужно определиться с тем, кто владеет объектами.
Что, если один из TObjectList находится в другом потоке
тогда нужно заодно продумывать доступ к стринглистам из разных потоков.
← →
han_malign © (2015-09-03 15:59) [4]
> Т.е. простыми словами, уничтожать нужно только один. Я правильно понял?
- неправильно - создавать нужно только один...
З.Ы. где-то там была ссылка на вопрос про XYZ...
← →
Цукор5 (2015-09-03 16:09) [5]Короче, я забил. Сделал копирование и все. Нет проблем с утечками.
procedure TForm1.InfoObj(var Msg: TMessage);
var Rec:PDataRec;
I,II:Integer;
begin
Rec:=PDataRec(Msg.WParam);
List.Clear;
if Rec^.Obj.Count>0 then
begin
for I:=0 to Rec^.Obj.Count-1 do List.Add(TStringList.Create);
//
for I:=0 to Rec^.Obj.Count-1 do
for II:=0 to TStrings(Rec^.Obj.Items[0]).Count-1 do TStrings(List.Items[I]).Add(TStrings(Rec^.Obj.Items[I]).Strings[II]);
end;
Dispose(Rec);
end;
← →
Юрий Зотов © (2015-09-03 17:20) [6]Ужас. Не завидую тому, кому придется этот код сопровождать.
Действительно, похоже на сагу про X, Y, Z. Вы бы лучше сказали простыми словами - в чем состоит задача-то? Есть подозрение, что можно сделать проще.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2017.04.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c