![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Компоненты TStringList и TObjectList [D6]
postedman © (2009-01-20 23:40:00)Очередной вопрос, связанный с учебой. Вроде бы простой, поэтому очень прошу помощи.
Вопрос вот в чем:
У нас есть списки типа TStringList и TObjectList. Первый - это список пар "строка-объект", второй - список объектов. Так вот, вопрос в том, что мне требуется перенести (скопировать) список объектов из одного списка в другой (списки одинакового типа, либо TStringList либо TObjectList оба.), чтобы не просто скопировать ссылки на эти объекты, а именно скопировать, то есть чтобы при удалении объекта в одном списке в другом он продолжал храниться.
В каком из этих двух классов присутствует подобный метод, как он называется и как его использовать, а то в хелпе я не очень нашел...
То есть можно ли копировать из СтрингЛиста в СтрингЛист или из ОбжектЛиста в ОбжектЛист и как это делать.
Вот такие условия... Просьба помочь.
Ega23 (2009-01-22 17:18:00) [1]
> То есть стандартными методами можно только ассоциировать
> с объектами другого листа..
И это очевидно. Я сегодня один класс накатал, завтра - другой, послезавтра - третий, который потомок первого.
Откуда кто-то кроме тебя знает, каким образом делать копии этих объектов?
postedman (2009-01-22 16:54:00) [2]То есть стандартными методами можно только ассоциировать с объектами другого листа.. Хм.. Ну лан, спасиб.
Правильный$Вася (2009-01-22 11:56:00) [3]
> создаст копии объектов первого листа
ручками-ручками
Медвежонок Пятачок (2009-01-21 21:41:00) [4]в смысле не написал ли какой-нибудь чудак странных, бессмысленных и никому не нужных методов?
postedman (2009-01-21 21:38:00) [5]А есть какой-нибудь метод, который создаст копии объектов первого листа и ассоциируцет их со вторым листом?
Медвежонок Пятачок (2009-01-21 18:30:00) [6]а у меня не выдает.
хотя код бессмысленный.
если листы владеют объектами, причем оба содержат ссылки на одни и те же экземпляры MyObj, то как минимум последний экземпляр будет убит.
.....
// on with the show
case AOperator of
// 12345, 346 = 346 : only those in the new list
laCopy:
begin
Clear;
....
postedman (2009-01-21 18:10:00) [7]Вопрос мне как раз преподаватель и задал и сказал разберись-ка. Он сам его выдумал, не из какой не методы.
За метод Assign спасибо, в стринглисте - супер. Но:
Возник проблем. Есть:
List1, List2: TObjectList;
Заполнены:
for i:=0 to 5 do
begin
MyObj:=MyObject.Create;
MyObj.Vol:=i;
MyObj.Cnt:=i;
List1.Add(MyObj);
end;
List2.Add(MyObj);
Так вот, при использовании метода:
List2.Assign(List1,laCopy,nil);
Выдает ошибку памяти. Типа EAccessViolation по адресу бла-бла-бла... Что неверно?
Правильный$Вася (2009-01-21 11:34:00) [8]
> чтобы при удалении объекта в одном списке в другом он продолжал
> храниться
в списке нет объектов, там есть только их адреса
манипуляция адресами не меняет объектов
KSergey (2009-01-21 10:35:00) [9]> Юрий Иванов (21.01.09 09:32) [6]
> Например, StringList1.Assign(StringList2)
Assign не создаст копию объектов на которые есть ссылки. Правда по вопросу не очень понятно надо ли это автору.
Он бы из методички елси б не поленился полностью переписать, а не своими словами пересказывать.
Впрочем, для этого препод есть.
Юрий Иванов (2009-01-21 09:32:00) [10]И в TStringList и в TObjectList есть метод Assign (см. справку).
Например, StringList1.Assign(StringList2)
Германн (2009-01-21 02:19:00) [11]
> Плохиш © (21.01.09 01:30) [3]
>
>
> > postedman (20.01.09 23:40)
> >
> >
>
> И чем только конференция "начинающим" таким не угодила?
>
Они о той конференции просто не знают. Ориентируются на гугль.
Плохиш (2009-01-21 01:31:00) [12]
> В каком из этих двух классов присутствует подобный метод
Ни в каком, см [2]
Плохиш (2009-01-21 01:30:00) [13]
> postedman (20.01.09 23:40)
>
>
И чем только конференция "начинающим" таким не угодила?
Медвежонок Пятачок (2009-01-20 23:46:00) [14]чтобы не просто скопировать ссылки на эти объекты, а именно скопировать,
сам-то понял что сказал?
в списках ничего кроме ссылок нет
MsGuns (2009-01-20 23:44:00) [15]Вообще-то это очень разные звери.