![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Duplicar "objetos"
Hola.
A ver, os explico el tema, puede q la pregunta sea muy estupida (pero no habia usado hasta hace poco la POO en delphi xD). La cosa esq tengo un objeto propio, q no es nativo del delphi, como por ejemplo:
o
Y quiero duplicarlo, osea crear 2 objetos iguales pero q sean independientes. Lo q esta claro esq si hacemos algo parecido a esto:
Ok, esto es normal q pase, ya q lo unico q hace es q el obj2 copia el puntero de obj1, y q si liberamos el obj1, el obj2 por asociacion se libera tambien, pero mi pregunta viene aqui: ¿Como lo hago para crear un objeto duplicado identico pero independiente uno del otro? He buscado por el foro, "copiar objeto", y me ha salido un post parecido a este, pero era para copiar Componentes visuales, y una de las respuestas me dio una idea, y es el "Assign", pero claro mis clases no tienen este proceso. ¿Deberia implementarla o heredarla de un objeto de nivel mas alto? ¿Hay alguna solucion facil y q no sepa q existe (q seria lo mas seguro xD)? Ahi va el tema, gracias por adelantado. Saludos. |
#2
|
||||
|
||||
Hola,
Reconozco que saco la frase de contexto, pero, es que me intriga de veras: ¿a qué te refieres cuando dices... Cita:
![]() |
#3
|
||||
|
||||
A mi tb me costo escribirlo, a ver si puedo definirlo de otra forma, hehe
Me refiero a q se cree una segunda instancia, q sea una copia de la primera (vamos con los mismos valores) pero q si elimino la primera, esta segunda (la nueva) no se vea afectada de ninguna forma y siga funcionando tranquilamente. No se si me he explicado mejor (en mi cabeza lo tengo muy claro, pero me cuesta definirlo de una forma q se entienda bien xDD) El mismo ejemplo, pero mostrado de otra forma:
Saludos. Última edición por xEsk fecha: 12-08-2006 a las 16:33:59. |
#4
|
||||
|
||||
Hola,
Bueno. Ahora creo haberte entendido. Me parece que el concepto sería "clonar" un objeto. Al menos así lo entiendo yo desde que conozco (a medias) la interface "ICloneable" disponible en la clase "System" de la plataforma .NET. En esta página (Delphi Basics) se trata sobre dicha interfaz, y, creo que la misma consigue está ahí para echar una mano a lo que te propones. Empero,... la verdad es que yo me pierdo un poco hablando de estos temas. A mí se me ocurre que si el objeto que quieres "clonar" no es muy "complejo", el mismo podría contar con un método (especificado o no por alguna interfaz al uso, que no sé si existe en Delphi, o si merecería la pena, si se ganaría algo), que el objeto contara con un método, digo, que fuera el encargado de la tarea que nos ocupa. Yo imagino algo así, pero, intuyo que podría mejorarse mucho, que me meto en temas que no comprendo bien. Parece ser que en esto de clonar objetos puede tirarse por dos caminos: Cita:
Una prueba podría resultar más o menos esto:
|
#5
|
||||
|
||||
Hola.
Antes q nada, gracias por perder tu precioso tiempo conmigo. Si, tienes razon q seria mucho mas sencillo llamarlo clonar. Tu solucion es una de mis primeras pensadas, pero luego como tu bien resaltas, si no son objetos complejos, cosa q no es el caso, heheh (vaya mala pata xD), ya q la clase q quiero clonar tiene bastantes propiededes, q a su vez estas tambien son clases con sus propiedades. Por el momento, la solucion mas cutre q se me ocurre, es intentar eviatar la necesidad de clonar. Despues de escribir este mensaje voy a leer el link q me has pasado. Saludos. |
#6
|
||||
|
||||
Pues si es complejo... a lo facil.
Deriva de TComponent que ya tienes los métodos Assign. Eso sí, deberás mirar como manipulas memoria dentro de tu objeto, pero en principio sería algo asi:
Si indagas por la VCL y la ayuda de Assign, creo que te puede hacer la vida más fácil. Alguna vez, para guardar un objeto en disco con SaveToStream, simplemente cambié el TObject por TComponent y todo resuelto, aunque creo que para tí no será tan simple. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿cuál es mejor: "close" o "application.terminate"? | unreal4u | Varios | 5 | 05-03-2007 11:01:19 |
porque no me reconoce los caracteres "*" ni "%" cuando filtro | mrmago | Conexión con bases de datos | 10 | 27-01-2006 04:21:16 |
Compartir "objetos" entre varias instancias | mafebresv | Varios | 4 | 16-01-2006 23:38:23 |
Tipo de Variable."String" ó "Double" | UTECYBER | OOP | 7 | 15-12-2003 20:25:39 |
![]() |
|