https://foro.gambas-es.org/viewtopic.php?f=1&t=1563&p=9074#p9074
-----------------------------------
soplo
Martes, 19 Abril 2011, 03:41

Re: Consulta Acerca De Una Matriz De Objetos: Todos Los Objetos Tienen Los Mismos Datos¿?
-----------------------------------
Hola

La parte de código que no pones es la que en mi opinión deberías poner.

Mas o menos debería ser algo como esto

[code linenumbers=false syntax=gambas]private sub LeerXml()
dim L as Lote 'definir la variable de clase Lote
Dim O as new object[] 'definir el espacio para el conjunto de lotes
Dim Nombre as string,  PrecioCompra as string,  PrecioVenta as string, PrecioUltimo as string

do while condicion 'mientras este bucle siga, leerás y meterás los datos en el object
   'aquí haces la extracción de datos de donde los saques
   ...
   'y obtienes Nombre,  preciocompra, precioventa, precioultimo
   ...

   'ahora viene la parte importante
   
   L=NEW Lote 'crear una nueva instancia
   L.InsertarValores(Nombre, Preciocompra, Precioventa, PrecioUltimo) 'asignar datos
   O.add(L) 'insertar el lote en el conjunto de lotes
   L.delete 'eliminar lote (No es necesario)
loop
end[/code]
Lo que hace ese bucle es ir leyendo del xml o lo que sea y va obteniendo un nombre, preciocompra, etc
Luego crea un lote, le asigna los valores y lo inserta en el conjunto de lotes
Ya puedes prescindir del lote porque está en el conjunto de lotes. Lo pongo para remarcar que no necesitas ese lote porque ya lo tienes guardado en el conjunto de lotes. Cuando quieras en otra parte rcuperar el lote N puedes hacer
[code linenumbers=false syntax=gambas]Dim L as new Lote
L=Obj[N)
[/code]

Por otra parte esa forma que has utilizado para enviar parámetros a la clase lote la veo incorrecta (aunque funciona)  y te explico la razón.

Si defines las variables como Public puedes acceder a ellas directamente, no necesitas un método para darles valor.  Podrías haber definido esas variables como private y funcionaría igual (mas limpio) o bien podrías haberlas definido públicas y darles valor directamente en cuyo caso no necesitas el método leevalores.

Prueba porque manejar estas cosas ayuda mucho. 

Por último hay otro método para pasar variables a una clase lote que es crearle propiedades a esa clase. En este caso lo veo por completo innecesario pero en otros casos es extremadamente útil y te aconsejo que lo mires.

Puse un ejemplo en este lugar, echa un vistazo
[url=http://foro.gambas-es.org/viewtopic.php?f=1&t=1557&p=9053#p9053]Enlace

Manejar estas técnicas para pasar datos de una clase a otra, de un formulario a otro (un formulario es una clase), etc es muy muy interesante y muy sencillo.

Un saludo
 :mryellow:


