elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación Visual Basic / Re: Problema con estructuras en: 19 Agosto 2014, 15:31 pm
Ya está!!!!!!!!!!!

Era el tema del deep copy que comentaba el compañero vladek.

al final he hecho una función para asignar, tal que así:

Public Function copyCam(ByVal hmi2cam As Boolean) As Boolean
        For i As Integer = 0 To MAX_CAM
            If hmi2cam Then
                Cam(i).Name = HmiCam(i).Name
                Cam(i).Index = HmiCam(i).Index
                Cam(i).CamType = HmiCam(i).CamType
                Cam(i).Enabled = HmiCam(i).Enabled
                Cam(i).Calibrate = HmiCam(i).Calibrate
                Cam(i).CalibOK = HmiCam(i).CalibOK
                Cam(i).Running = HmiCam(i).Running
                For j As Integer = 0 To MAX_DATA_PARAM
                    Cam(i).Param(j).Enabled = HmiCam(i).Param(j).Enabled
                    Cam(i).Param(j).Name = HmiCam(i).Param(j).Name
                    Cam(i).Param(j).Value = HmiCam(i).Param(j).Value
                Next
                For j As Integer = 0 To MAX_DATA_SET
                    Cam(i).Setting(j).Enabled = HmiCam(i).Setting(j).Enabled
                    Cam(i).Setting(j).Name = HmiCam(i).Setting(j).Name
                    Cam(i).Setting(j).Value = HmiCam(i).Setting(j).Value
                Next
                For j As Integer = 0 To MAX_DATA_WORK
                    Cam(i).Work(j).Enabled = HmiCam(i).Work(j).Enabled
                    Cam(i).Work(j).Name = HmiCam(i).Work(j).Name
                    Cam(i).Work(j).Value = HmiCam(i).Work(j).Value
                Next
            Else
                HmiCam(i).Name = Cam(i).Name
                HmiCam(i).Index = Cam(i).Index
                HmiCam(i).CamType = Cam(i).CamType
                HmiCam(i).Enabled = Cam(i).Enabled
                HmiCam(i).Calibrate = Cam(i).Calibrate
                HmiCam(i).CalibOK = Cam(i).CalibOK
                HmiCam(i).Running = Cam(i).Running
                For j As Integer = 0 To MAX_DATA_PARAM
                    HmiCam(i).Param(j).Enabled = Cam(i).Param(j).Enabled
                    HmiCam(i).Param(j).Name = Cam(i).Param(j).Name
                    HmiCam(i).Param(j).Value = Cam(i).Param(j).Value
                Next
                For j As Integer = 0 To MAX_DATA_SET
                    HmiCam(i).Setting(j).Enabled = Cam(i).Setting(j).Enabled
                    HmiCam(i).Setting(j).Name = Cam(i).Setting(j).Name
                    HmiCam(i).Setting(j).Value = Cam(i).Setting(j).Value
                Next
                For j As Integer = 0 To MAX_DATA_WORK
                    HmiCam(i).Work(j).Enabled = Cam(i).Work(j).Enabled
                    HmiCam(i).Work(j).Name = Cam(i).Work(j).Name
                    HmiCam(i).Work(j).Value = Cam(i).Work(j).Value
                Next
            End If
        Next

        Return True
    End Function

Es un rollazo impresionante ya que ahora tengo que tener en cuenta esta función cada vez que agregue/quite miembros de la estructura.
Pero bueno, así ya está solucionado...  :D
2  Programación / Programación Visual Basic / Re: Problema con estructuras en: 19 Agosto 2014, 13:05 pm
He probado cambiando también .Enabled y también se cambia en las dos estructuras...
También he probado con HmiCam = Cam.Clone() y continúa pasando igual...
3  Programación / Programación Visual Basic / Re: Problema con estructuras en: 19 Agosto 2014, 11:18 am
He probado diferentes ñapas (comentar código, quitar asignaciones...) y continúa haciendo esa 'doble asignación'...

A nadie se le ocurre nada?
4  Programación / Programación Visual Basic / Problema con estructuras en: 14 Agosto 2014, 13:06 pm
Hola amigos del foro!
Aunque nunca he escrito nada por aquí, he leido bastantes artíclos que me han sido de gran ayuda.

Ahora me encuentro con un problema que se escapa a mi lógica: Tengo una estructura que he creado, con dos instancias a la misma (cam y hmicam). Una sirve para almacenar los datos (cam) y la otra para mostrarlos (hmicam) de forma que cuando se muestran (en un listview) paso los valores de cam a hmicam y muestro esos últimos. En el listview se pueden modificar (sobre hmi cam) y al cerrar la aplicación quiero que se asigne de forma inversa para guardar cam.

Lo q me pasa es que al cambiar un valor de la estructura hmicam, también se cambia en cam!!!

Tengo entendido que, al ser dos instancias diferentes, son como dos variables diferentes, no?

Qué hago!?!?!

Las estructuras son estas:

  'STRUCTURES
    <Serializable()> Public Structure stData
        Public Name As String
        Public Value As Double
        Public Enabled As Boolean
        'public Description as string
    End Structure

    <Serializable()> Public Structure stCam
        Public Name As String
        Public Index As Integer
        Public CamType As enumCamType
        Public Enabled As Boolean
        Public Calibrate As Boolean
        Public CalibOK As Boolean
        Public Running As Boolean
        Public Param() As stData
        Public Setting() As stData
        Public Work() As stData
    End Structure

Las instancias:

Public Cam() As stCam
Public HmiCam() As stCam

En la inicialización del listview hago:
 HmiCam = Cam

y después escribo en HmiCam(indice).Work(subindice).Value.
cuando lo hago también cambia el valor en Cam(indice).Work(subindice).Value.

Muchas gracias por adelantado...
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines