none
List Of me machaca los datos RRS feed

  • Pregunta

  • Hola :

    No consigo ver donde esta el fallo. A ver si me echáis una mano.

    Tengo declarada una lista de este modo :

    Dim lis_secuencias As New List(Of c_Secuencia) 

    y un objeto de este otro 

    Dim obj_secuencia As New c_Secuencia

    Voy añadiendo los datos de este otro modo

    obj_secuencia.Nombre = "nombre"+i.tostring

     lis_secuencias.Add(obj_secuencia) 

    La clase tiene estas propiedades 

    Public Class c_Secuencia

      Private strNomSec As String
        Private pb_imagen1 As New PictureBox
        Private pb_imagen2 As New PictureBox
        Private pb_imagen3 As New PictureBox
        Private obj_sonido As New C_Audio        

    -------------------------------------------------------------------------------------------

    El problema esta que cuando añado el objeto me machaca la propiedad strNom del todos los objetos

    que había anteriormente. Pero me suma un objeto más a la lista. Por que se ve como añade a la propiedad Count de la lista

    uno más.

    -------------------------------------------

    ¿Qué no veo? 



    • Editado Amigozgz martes, 31 de mayo de 2016 18:11
    martes, 31 de mayo de 2016 18:07

Respuestas

Todas las respuestas



    • Marcado como respuesta Amigozgz martes, 31 de mayo de 2016 18:17
    • Desmarcado como respuesta Amigozgz martes, 31 de mayo de 2016 18:42
    • Editado Amigozgz martes, 31 de mayo de 2016 18:43
    martes, 31 de mayo de 2016 18:17
  • Amigozgz,

    ¿Podrías colocar el código necesario para entender es contexto? Creo que estás iterando alguna colección y estás teniendo problemas en la asignación de la clase a la colección

    martes, 31 de mayo de 2016 19:11
  • hola

    si realizas esta operacion dentro de algun loop recuerda que la instancia debes crearla de forma local

    Dim lis_secuencias As New List(Of c_Secuencia) 
    
    For i As Integer = 0 To 10
    
    	Dim obj_secuencia As New c_Secuencia
    	obj_secuencia.Nombre = "nombre"+i.tostring
    
    	lis_secuencias.Add(obj_secuencia) 
    	
    Next

    es importante donde instancias la entidad que agregas a la lista

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 31 de mayo de 2016 19:24
  •  For Each o_archivo In di_listadoSecuencias.GetFiles("Secuencia_Nivel_" + nivel.ToString + "*.tec")

       strNomFichero = o_archivo.Name.ToString.Replace(".tec", "")

         arl_Qleer = Leer(arl_Qleer) 'LEctura del fichero Los campos que se pidieron, reutilizo el arraylist , funciona bien

       obj_secuencia.Imagen1.ImageLocation = arr_vec(0) 'Se guarda la localización de la imagen 1
                            obj_secuencia.Imagen2.ImageLocation = arr_vec(2) 'Se guarda la localización de la imagen 2
                            obj_secuencia.Imagen3.ImageLocation = arr_vec(4) 'Se guarda la localización de la imagen 3

     obj_secuencia.ObjSonido.NombreAudio = arl_Qleer(intposi + 1)

      lis_secuencias.Add(obj_secuencia) 'añade la secuencia a la lista de secuencias que se devolverá.

                arl_Qleer.Clear()

    Next


            Return lis_secuencias

    -------------------------------------

    El objeto me lo rellena a las mil maravillas. Realiza la lectura y lo rellena diferente vez cada vez. Lo añado a la lista y ahí ,como bien dices , me cambia todos los objetos al mismo valor que el último objeto.

    --------------------

    A lo mejor la solución es hacer esto  lis_secuencias.Add(New c_Secuencia)

    pero no se como asignar el valor , así como esto lis_secuencias.Add(New c_Secuencia) =obj_secuencia

    martes, 31 de mayo de 2016 19:39
  • la instancia de obj_secuencia debes crearla dentro del For Each como muestro en el ejemplo de la respuesta anterior

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Amigozgz martes, 31 de mayo de 2016 19:59
    martes, 31 de mayo de 2016 19:40
  • Amigozgz,

    For Each o_archivo In di_listadoSecuencias.GetFiles("Secuencia_Nivel_" + nivel.ToString + "*.tec")
              Dim obj_secuencia As New c_Secuencia
              ...


    • Marcado como respuesta Amigozgz martes, 31 de mayo de 2016 19:58
    • Desmarcado como respuesta Amigozgz martes, 31 de mayo de 2016 19:59
    martes, 31 de mayo de 2016 19:42
  • Eres un fenómeno Leandro.

    Muchas gracias.

    martes, 31 de mayo de 2016 19:59