Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];

Вниз

Компоненты 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.045 c
2-1232896639
И. Павел
2009-01-25 18:17
2009.03.15
Как показать модальное окно только после CreateRectRgn?


15-1231753699
NailMan
2009-01-12 12:48
2009.03.15
немного про свои сайты


15-1230182983
novai
2008-12-25 08:29
2009.03.15
как очистить таблицу от записей в access?


15-1231595981
Slider007
2009-01-10 16:59
2009.03.15
С днем рождения ! 6 января 2009 вторник


2-1233132678
engine
2009-01-28 11:51
2009.03.15
MCISendString с флагом notify





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский