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

Вниз

Неясность с TCollection.Assign   Найти похожие ветки 

 
Val ©   (2006-11-29 16:33) [0]

Есть class1, имеющий свойство-коллекцию (prop), наследник TCollection(TIdCookies->TOwnedCollection->TCollection).
Есть class2, имеющий свойство того же типа.
Выполняю
class2_obj.prop.Assign(class1_obj.prop);
(перекрытых Assign нет, выполняется TCollection.Assign)
затем сравниваю значения prop.Items[i].xxx - есть различия в одном из свойств - в class2_obj оно пустое...почему? ведь при assign должна получаться _копия_ объекта, разве не так?


 
Юрий Зотов ©   (2006-11-29 18:32) [1]

Если в классе элементов коллекции перекрыт метод Assingn(To) - то да, будет копия. А если не перекрыт, то кто же будет делать эту копию?


 
Val ©   (2006-11-30 10:50) [2]

Наврал я конечно :( в классе элемента коллекции метод Assign перекрыт.
Но факт остается фактом - по крайней мере, одно из свойств одного из трех элементов коллекции отличается после выполнения Assign. Как я понимаю, возможно, дело в Set методе соотв. свойства, который срабатывает при присвоению свойству значения(у элемента коллекции есть взаимозависимые свойства, например Max_Age и Expires). Но как скопировать коллекцию один к одному, чтобы эти методы не срабатывали?


 
Сергей М. ©   (2006-11-30 10:56) [3]


> в классе элемента коллекции метод Assign перекрыт.


А следовало бы перекрыть именно AssignTo.
Перекрывать без явной надобности публичные методы в общем случае не есть корошо, даже если они объявлены виртуальными.


 
Val ©   (2006-11-30 10:59) [4]

>[3] Сергей М. ©   (30.11.06 10:56)
ну, это к писателям инди.


 
Сергей М. ©   (2006-11-30 11:03) [5]


> это к писателям инди


Ну ведь есть же исходники этого "чуда"..

оттрассируй пошагово интересующую логику - наверняка станет понятно, баг это или фича ..


 
Val ©   (2006-11-30 11:09) [6]

да есть конечно. но дело в том, что мне не нужно это, будь это баг или фича. мне нужна полная точная копия коллекции в другом объекте(а просто хочу закэшировать куки). может это вообще не assign делается?


 
Сергей М. ©   (2006-11-30 11:15) [7]


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


Вот и оттрассируй Assign() .. либо он это делает, либо не делает по неважным для тебя причинам ..


 
Val ©   (2006-11-30 11:36) [8]

>Сергей М. ©   (30.11.06 11:15)
ну..если бы он это делал, то ветки бы не было. в возможности оттрасировать вопроса нет. вопрос - верно ли я делаю в принципе - копирование объекта делается _стандартно_ именно этим методом?


 
Юрий Зотов ©   (2006-11-30 11:53) [9]

Этим.


 
Юрий Зотов ©   (2006-11-30 11:55) [10]

Еще надо посмотреть, что делает Assign в элементе коллекции. Возможно, он копирует не все свойства.


 
Val ©   (2006-11-30 12:56) [11]

всем большое спасибо, буду разбираться.



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

Форум: "Основная";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
3-1162302080
MAX727
2006-10-31 16:41
2007.01.21
Как создать .mdb - файл


2-1168004094
Тиммммм
2007-01-05 16:34
2007.01.21
монохром


2-1167378004
boleg
2006-12-29 10:40
2007.01.21
Непонимаю почему не работает


15-1167236824
kaZaNoVa
2006-12-27 19:27
2007.01.21
Выделение строк


2-1167476157
ламер 2.Х
2006-12-30 13:55
2007.01.21
Indy





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский