Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2019, 18:12   #1
Maxim.K.
Новичок
Джуниор
 
Регистрация: 30.03.2019
Сообщений: 1
По умолчанию Как создать копию(клон) объекта ?

Добрый день. Вопрос не простой по делфи.

Заранее(до запуска) не известен тип класса(знаем только родителя). А в режиме RunTime выясняется тип класса(у объекта) и нужно создать копию объекта.
Вот начало кода, помогите дописать ...

Код:
type
   tMyObject = class(TObject)
   end;

var 
  l_Src: tMyObject; 
  l_Dst: TObject;   

begin
   l_Src := tMyObject.Create;
   l_Dst := MakeClone(l_Src);  //  должна вернуть новый объект tMyObject
end;

function MakeClone(aSrc: TObject): TObject;
begin
   // плиз, помогите дописать этот метод
   Result := (здесь д.б. реальный тип объекта aSrc).Create;
end;
Спасибо.
Maxim.K. вне форума Ответить с цитированием
Старый 30.03.2019, 22:53   #2
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию

быть может так?
Код:
type
   tMyObject = class(TObject) //объект
   end;

var 
  l_Src: array of tMyObject; //создали глобальный (или локальный) массив объектов

procedure btnAddClick(Sender:TObject); //по какому то действию (тут по нажатию кнопки)
begin
  setLength(l_Src,length(l_Src)+1); // увеличили размер массива (количество твоих объектов) на один, то есть теперь у тебя массив из n+1 элементов каждый из которых наследует все свойства и методы tMyObject 
   
end;
PTyTb32 вне форума Ответить с цитированием
Старый 02.04.2019, 12:21   #3
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Код:
type
  TMyObject = class
  end;

var
  L_Src:TMyObject;
  L_Dst:TObject;

function MakeClone(ASrc:TObject):TObject;
begin
  Result:=ASrc.ClassType.Create;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  L_Dst:=nil;
  L_Src:=TMyObject.Create;

  L_Dst:=MakeClone(L_Src);
  ShowMessage(L_Dst.ClassName);
end;
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать динамическую копию статического объекта js_roman Общие вопросы Delphi 0 15.05.2016 12:57
Как создать уникальную копию record, содержащую вложенные динамические массивы? Dmitro25 Общие вопросы Delphi 2 08.10.2014 09:47
Создать копию базы для теста и отладки на MSSQLserv Kaifun SQL, базы данных 2 09.10.2012 07:52
Как создать копию существующего окна? u-a-ulia Общие вопросы C/C++ 0 04.10.2010 17:52
Не могу создать копию проекта John_chek БД в Delphi 4 15.02.2008 15:53