Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.15;
Скачать: CL | DM;

Вниз

Компоненты TStringList и TObjectList   Найти похожие ветки 

 
postedman   (2009-01-20 23:40) [0]

Очередной вопрос, связанный с учебой. Вроде бы простой, поэтому очень прошу помощи.
Вопрос вот в чем:
У нас есть списки типа TStringList и TObjectList. Первый - это список пар "строка-объект", второй - список объектов. Так вот, вопрос в том, что мне требуется перенести (скопировать) список объектов из одного списка в другой (списки одинакового типа, либо TStringList либо TObjectList оба.), чтобы не просто скопировать ссылки на эти объекты, а именно скопировать, то есть чтобы при удалении объекта в одном списке в другом он продолжал храниться.
В каком из этих двух классов присутствует подобный метод, как он называется и как его использовать, а то в хелпе я не очень нашел...
То есть можно ли копировать из СтрингЛиста в СтрингЛист или из ОбжектЛиста в ОбжектЛист и как это делать.
Вот такие условия... Просьба помочь.


 
MsGuns ©   (2009-01-20 23:44) [1]

Вообще-то это очень разные звери.


 
Медвежонок Пятачок ©   (2009-01-20 23:46) [2]

чтобы не просто скопировать ссылки на эти объекты, а именно скопировать,

сам-то понял что сказал?
в списках ничего кроме ссылок нет


 
Плохиш ©   (2009-01-21 01:30) [3]


> postedman   (20.01.09 23:40)
>
>

И чем только конференция "начинающим" таким не угодила?


 
Плохиш ©   (2009-01-21 01:31) [4]


> В каком из этих двух классов присутствует подобный метод

Ни в каком, см [2]


 
Германн ©   (2009-01-21 02:19) [5]


> Плохиш ©   (21.01.09 01:30) [3]
>
>
> > postedman   (20.01.09 23:40)
> >
> >
>
> И чем только конференция "начинающим" таким не угодила?
>

Они о той конференции просто не знают. Ориентируются на гугль.


 
Юрий Иванов   (2009-01-21 09:32) [6]

И в TStringList и в TObjectList есть метод Assign (см. справку).

Например, StringList1.Assign(StringList2)


 
KSergey ©   (2009-01-21 10:35) [7]

> Юрий Иванов   (21.01.09 09:32) [6]
> Например, StringList1.Assign(StringList2)

Assign не создаст копию объектов на которые есть ссылки. Правда по вопросу не очень понятно надо ли это автору.
Он бы из методички елси б не поленился полностью переписать, а не своими словами пересказывать.

Впрочем, для этого препод есть.


 
Правильный$Вася   (2009-01-21 11:34) [8]


> чтобы при удалении объекта в одном списке в другом он продолжал
> храниться

в списке нет объектов, там есть только их адреса
манипуляция адресами не меняет объектов


 
postedman   (2009-01-21 18:10) [9]

Вопрос мне как раз преподаватель и задал и сказал разберись-ка. Он сам его выдумал, не из какой не методы.
За метод 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 18:30) [10]

а у меня не выдает.
хотя код бессмысленный.
если листы владеют объектами, причем оба содержат ссылки на одни и те же экземпляры MyObj, то как минимум последний экземпляр будет убит.

.....
// on with the show
 case AOperator of

   // 12345, 346 = 346 : only those in the new list
   laCopy:
     begin
       Clear;
....


 
postedman   (2009-01-21 21:38) [11]

А есть какой-нибудь метод, который создаст копии объектов первого листа и ассоциируцет их со вторым листом?


 
Медвежонок Пятачок ©   (2009-01-21 21:41) [12]

в смысле не написал ли какой-нибудь чудак странных,  бессмысленных и никому не нужных методов?


 
Правильный$Вася   (2009-01-22 11:56) [13]


> создаст копии объектов первого листа

ручками-ручками


 
postedman   (2009-01-22 16:54) [14]

То есть стандартными методами можно только ассоциировать с объектами другого листа.. Хм.. Ну лан, спасиб.


 
Ega23 ©   (2009-01-22 17:18) [15]


> То есть стандартными методами можно только ассоциировать
> с объектами другого листа..


И это очевидно. Я сегодня один класс накатал, завтра - другой, послезавтра - третий, который потомок первого.
Откуда кто-то кроме тебя знает, каким образом делать копии этих объектов?



Страницы: 1 вся ветка

Текущий архив: 2009.03.15;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
15-1231979318
XentaAbsenta
2009-01-15 03:28
2009.03.15
непереопределённые обстрактные методы


6-1200389418
chemelin
2008-01-15 12:30
2009.03.15
Помогите с winsocket в WinAPI


2-1232953232
Iriss
2009-01-26 10:00
2009.03.15
delphi из excel в stringgrid через буфер обмена


2-1232628723
charoey_mag
2009-01-22 15:52
2009.03.15
Получить имя NetBIOS


15-1231177309
nonamez11
2009-01-05 20:41
2009.03.15
смена картинки при наведении