Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Manejo de arreglos (https://www.clubdelphi.com/foros/showthread.php?t=64569)

num11 07-04-2009 22:16:15

Manejo de arreglos
 
Saludos!! Otra vez preguntando, espero me puedan ayudar XD. Estoy haciendo una estructura record de X objeto en Delphi, lo cual lo hago +- así:

Código Delphi [-]
 objeto = record
                  //atributos de objeto
             end;

Después declaro un arreglo de objetos y 1 objeto de la siguiente forma:

Código Delphi [-]
            arreglo :  array of objeto;
            objetoX : objeto;

Lleno mi arreglo con N objetos y después para algunas operaciones independientes del arreglo (No quiero modificar el arreglo) hago lo siguiente
objetoX := arreglo[Xposicion]. Lo que pasa es que al cambiarle propiedades a mi objetoX se cambian también en el arreglo, y no quiero que suceda eso; supongo que en la asignación a objetoX se está haciendo por referencia y no por valor, y al cambiar algo en objetoX se cambia igual en arreglo[xPosicion]. ¿Existe alguna forma de que no pase esto o de que el contenido de arreglo[xPosicion] se copie por valor a mi objetoX?.
De antemano gracias por su ayuda y paciencia :D

rgstuamigo 07-04-2009 23:31:20

Prueba haciendo lo siguiente:
Código Delphi [-]
objetoX.atributo1:=arreglo[Xposicion].atributo1;
objetoX.atributo2:=arreglo[Xposicion].atributo2;
...
...
Aunque seria mejor que te hicieras una rutina(Procedimiento) para poder hacerlo;) o quisas tambien exista alguna funcion o procedimiento del propio delphi.:rolleyes:.
Saludos...:)

num11 08-04-2009 00:05:37

Hola!!, efectivamente ya habia pensado en esa solución, pero el problema es que (va a sonar super raro) XD uno de los atributos de mi objeto es un arreglo de objetosY, y este a su vez tiene como atributo un arreglo de objetosZ + otros atributos, y seria algo medio pesado estar haciendo cada copia de la manera que me propones; por eso quiero saber si existe alguna función que ya te haga esto, sino, no va a haber de otra, pero lo tendré que hacer así :)


La franja horaria es GMT +2. Ahora son las 09:42:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi