Clonagem
Gostaria de saber como faço para clonar um ´[b:74b6dba1c1]Objeto[/b:74b6dba1c1]´? E não um componente!
Bem! Tenho um exemplo q como clonar um componente mas para clonar um objeto qualquer não funciona.
Estou mandando um exemplo bem simples de uma classe q poderia ter seus objetos clonados!
TEstado = class
valor1,
valor2: byte;
end;
Atenciosamente Fernando
Bem! Tenho um exemplo q como clonar um componente mas para clonar um objeto qualquer não funciona.
Estou mandando um exemplo bem simples de uma classe q poderia ter seus objetos clonados!
TEstado = class
valor1,
valor2: byte;
end;
Atenciosamente Fernando
Fernando Piccini
Curtidas 0
Respostas
Massuda
10/01/2005
Você pode incluir seu próprio método de clonagem na sua classe.
O esquema usual de clonagem de objetos costuma se basear na idéia usada em TPersistent.Assign. Para um exemplo, dê uma olhada [url=http://groups.google.com.br/groups?hl=pt-BR&lr=&threadm=VA.00004992.0094fc83¬40antispam.compuserve.com&rnum=1&prev=/groups¬3Fq¬3DPeter¬2520Below¬2520TRgroup¬26hl¬3Dpt-BR¬26lr¬3D¬26sa¬3DN¬26tab¬3Dwg]nesta discussão no NG da Borland[/url].
type TEstado = class valor1: byte; valor2: byte; public function Clone: TEstado; end; function TEstado.Clone: TEstado; begin Result := TEstado.Create; Result.valor1 := Self.valor1; Result.valor2 := Self.valor2; end;
O esquema usual de clonagem de objetos costuma se basear na idéia usada em TPersistent.Assign. Para um exemplo, dê uma olhada [url=http://groups.google.com.br/groups?hl=pt-BR&lr=&threadm=VA.00004992.0094fc83¬40antispam.compuserve.com&rnum=1&prev=/groups¬3Fq¬3DPeter¬2520Below¬2520TRgroup¬26hl¬3Dpt-BR¬26lr¬3D¬26sa¬3DN¬26tab¬3Dwg]nesta discussão no NG da Borland[/url].
GOSTEI 0
Paulo_amorim
10/01/2005
Olá
Você não pode declará-lo como TPersistent ? Se sim, utilize o método Assign dele
No help do Delphi terá mais informações
Espero que ajude
Até+
Você não pode declará-lo como TPersistent ? Se sim, utilize o método Assign dele
No help do Delphi terá mais informações
Espero que ajude
Até+
GOSTEI 0
Fernando Piccini
10/01/2005
Massuda! vlw pela ajuda testei o código q vc envio e funcionou!
Agora consigo fazer a clonagem do [b:93bb24b5f9]Objeto[/b:93bb24b5f9] ou seja, consigo criar um novo em vez de ser dois ponteiros p/ o mesmo obj.
vlw ai gente! :D
Agora consigo fazer a clonagem do [b:93bb24b5f9]Objeto[/b:93bb24b5f9] ou seja, consigo criar um novo em vez de ser dois ponteiros p/ o mesmo obj.
vlw ai gente! :D
GOSTEI 0
Fernando Piccini
10/01/2005
Este Exemplo q consigue eh para clonar [b:e56a974b89]Componentes[/b:e56a974b89].
function CloneComponent(ComponentSource: TComponent; var ComponentClone: TComponent: CloneName: String): boolean;
var
CompStream: TMemoryStream;
begin
try
CompStream: TMemoryStream.Create;
CompStream.WriteComponent(ComponentSource);
CompStream.seek(0,soFromBeginning);
ComponentClone.Name:= CloneName;
result:= true;
except
result:= false;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
CloneLabel; TLabel;
begin
CloneLabel:= TLabel.create(nil);
CloneComponent(Label1, TComponent(CloneLabel), ´CloneLabel1´);
CloneLabel.parent:= form1;
CloneLabel.left:= 100;
CloneLabel.Top:= 100;
CloneLabel.Caption:= CloneLabel.Name;
end;
function CloneComponent(ComponentSource: TComponent; var ComponentClone: TComponent: CloneName: String): boolean;
var
CompStream: TMemoryStream;
begin
try
CompStream: TMemoryStream.Create;
CompStream.WriteComponent(ComponentSource);
CompStream.seek(0,soFromBeginning);
ComponentClone.Name:= CloneName;
result:= true;
except
result:= false;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
CloneLabel; TLabel;
begin
CloneLabel:= TLabel.create(nil);
CloneComponent(Label1, TComponent(CloneLabel), ´CloneLabel1´);
CloneLabel.parent:= form1;
CloneLabel.left:= 100;
CloneLabel.Top:= 100;
CloneLabel.Caption:= CloneLabel.Name;
end;
GOSTEI 0
Paulo_amorim
10/01/2005
Olá
Para clonar componentes não basta fazer esse codigo?
Isso que eu saiba, claro
Até+
Para clonar componentes não basta fazer esse codigo?
<componente>.Assign(<Outro componente>);
Isso que eu saiba, claro
Até+
GOSTEI 0