Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Компоненты 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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо