![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как скопировать объект
ciborg © (2008-06-19 15:08:00)Как полностью скопировать экземпляр объекта, а не только ссылку на него?
Palladin (2008-06-19 19:55:00) [1]
> Игорь Шевченко © (19.06.08 19:52) [27]
читал, но не проникся :)
Игорь Шевченко (2008-06-19 19:52:00) [2]
> чему именно тебе повозмущатся легче? что нет клонирования?
> а ты дай определение - что есть клонирование.
а ты .Net почитай - их там аж два, копирования, deep и не deep :)
Palladin (2008-06-19 19:06:00) [3]
> ciborg (19.06.08 19:04) [25]
это называется копирование ссылки, а не клонирование
ciborg (2008-06-19 19:04:00) [4]
> чему именно тебе повозмущатся легче? что нет клонирования?
> а ты дай определение - что есть клонирование.
Клонирование это полное копирование объекта. Допустим у нас есть объект, мы создали его копию. Если теперь если мы любые действия будем выполнять с любым из этих объектов, то результат должен получаться одинаковый.
Palladin (2008-06-19 18:52:00) [5]
> мне легче повозмущаться
чему именно тебе повозмущатся легче? что нет клонирования? а ты дай определение - что есть клонирование.
пример 1
Type
TObject1=Class
Public
n1:Integer;
n2:Integer;
End;
тут все просто и понятно, взяли и присвоили поля
пример 2
Type
TObject2=Class
Public
List:TObjectList; // содержащий экземпляры TObject1
End;
тут чего делаем при клонировании? копируем ссылку на экземпляр List или сам List тоже клонируем?
пример 3
Type
TObject3=Class(TObject2)
Public
SubObjects2:TStringList; // строковые обозначения в Objects у которых объекты TObject1
End;
тут чего делаем при клонировании? что именно и как именно клонируем?
пример 4
Type
TObject4=Class(TObject3)
Private
m_theParent:TObject4;
Public
Constructor Create(p_theParent:TObject4);
Property Parent:TObject4 Read m_theParent;
End;
а тут чего делаем при клонировании? что именно и как именно клонируем?
каким попом разработчики компилятора должны закладывать возможность клонирования?
повозмущаться он решил...
ciborg (2008-06-19 17:15:00) [6]Удалено модератором
Ega23 (2008-06-19 17:14:00) [7]Удалено модератором
ciborg (2008-06-19 17:06:00) [8]Удалено модератором
Ega23 (2008-06-19 16:57:00) [9]
> Это что такое?
Это когда ты только подумал, а у тебя уже кросс-платформенная система готова. С инсталлятором, многонациональной поддержкой и работает под любой СУБД. И даже комп включать не надо.
Palladin (2008-06-19 16:44:00) [10]вообще говоря, клонирование объекта задача далеко не общая... потому к каждому случаю нужен свой подход...
ciborg (2008-06-19 16:41:00) [11]
> Тебе нужен компилятор пятого поколения.
Это что такое?
Anatoly Podgoretsky (2008-06-19 16:40:00) [12]> ciborg (19.06.2008 16:11:12) [12]
Тебе нужен компилятор пятого поколения.
ciborg (2008-06-19 16:38:00) [13]
> Пиши на Lisp, в чём проблема-то?
Не... мне легче повозмущаться и продолжить писать на делфи.
Palladin (2008-06-19 16:37:00) [14]
> Тын-Дын © (19.06.08 15:31) [3]
приватные в общем случае нет конечно, аналог метода Assign свой писать нужно... я, обычно, если модель подразумевает клонирование объектов, создаю метод-функцию Clone... и конечно можно отнаследоваться от TPersistent, но иногда это стрельба из пушки по мухам :)...
Ega23 (2008-06-19 16:29:00) [15]
> По моемому это недоработка ObjectPascal'я
Пиши на Lisp, в чём проблема-то?
stas (2008-06-19 16:15:00) [16]>DrPass © (19.06.08 16:06) [11]
не знал.
ciborg (2008-06-19 16:11:00) [17]
> "Безусловно, Малыш!" (с)
По моемому это недоработка ObjectPascal'я
DrPass (2008-06-19 16:06:00) [18]
> Тут копируется всё - координаты, размеры даже имена
Только published-свойства
stas (2008-06-19 16:02:00) [19]Var S:TMemoryStream;
begin
S:=TMemoryStream.Create;
S.WriteComponent(memo1);
memo1.Free;
S.Position:=0;
S.ReadComponent(Memo2);
end;
Тут копируется всё - координаты, размеры даже имена
Ega23 (2008-06-19 16:02:00) [20]
> Я думал все автоматически делается.
Ага, и "кампанент" TOSWindows2000 тоже есть...