Foros del Web » Programación para mayores de 30 ;) » .NET »

Pasando a una función una Structure por valor (ByVal)

Estas en el tema de Pasando a una función una Structure por valor (ByVal) en el foro de .NET en Foros del Web. Buenas tardes, me gustaría saber por qué me da error cuando a una función de VB .NET le paso por valor (ByVal) una estructura (Structure). ...
  #1 (permalink)  
Antiguo 19/05/2009, 11:54
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Pasando a una función una Structure por valor (ByVal)

Buenas tardes,

me gustaría saber por qué me da error cuando a una función de VB .NET le paso por valor (ByVal) una estructura (Structure).

La función es ésta:
Cita:
Public Sub setFamiliares(ByVal numFam as Integer, ByVal fam1 As Modulo_Estructuras.datosFamiliares, ByVal fam2 As Modulo_Estructuras.datosFamiliares)
numFamilias = numFam

If (numFamilias = 1) Then
familia1 = fam1
setIconoFamiliares(True)

ElseIf (numFamilias = 2) Then
familia1.cod_us = fam1.cod_us
familia1.comentario_fm = fam1.comentario_fm
familia2.cod_us = fam2.cod_us
familia2.comentario_fm = fam2.comentario_fm
setIconoFamiliares(True)

Else
familia1.cod_us = ""
familia2.comentario_fm = ""
setIconoFamiliares(False)

End If

End Sub
Y la estructura es esta:
Cita:
Structure datosFamiliares
<VBFixedString(7)> Dim cod_us As String
<VBFixedString(1000)> Dim comentario_fm As String

End Structure
Dicha estructura está almacenada en el fichero "Modulo_Estructuras.vb"

El error lo da en la declaración de la función:
Cita:
Public Sub setFamiliares(ByVal numFam, ByVal fam1 As Modulo_Estructuras.datosFamiliares, ByVal fam2 As Modulo_Estructuras.datosFamiliares)
Y me dice:
Cita:
'fam1' no puede exponer el tipo 'Modulo_Estructuras.datosFamiliares' fuera del proyecto a través de class 'Form_Acciones_Nuevo_Usuario'
Cita:
'fam2' no puede exponer el tipo 'Modulo_Estructuras.datosFamiliares' fuera del proyecto a través de class 'Form_Acciones_Nuevo_Usuario'
"Form_Acciones_Nuevo_Usuario" es el formulario donde se encuentra la función "setFamiliares"

¿Qué podría ser? ¿Por qué peta?
  #2 (permalink)  
Antiguo 19/05/2009, 15:18
 
Fecha de Ingreso: abril-2007
Mensajes: 163
Antigüedad: 17 años
Puntos: 2
Respuesta: Pasando a una función una Structure por valor (ByVal)

Hola,
La estructura debe estar declarada dentro de una clase. En ese caso seguro que funciona.
Por cierto, no recuerdo si las estructuras permiten declarar el ambito public/private, supongo que si, prueba también que sea public.

saludos.
__________________
http://literaturaprogramada.blogspot.com.es/
literaturapogramada.blogspot - Reflexiones mundanas sobre la programación
  #3 (permalink)  
Antiguo 19/05/2009, 16:07
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasando a una función una Structure por valor (ByVal)

Gracias meula,

he cambiado la declaración del módulo por una clase pública y ya se va el problema...

Sin embargo, sigo con un problema que ya tenía antes de postear el que me acabas de solucionar: no me guarda la información que recibe la función en la structure... Sabrías un posible por qué?

Muchas gracias! Un saludo!
  #4 (permalink)  
Antiguo 19/05/2009, 23:50
 
Fecha de Ingreso: abril-2007
Mensajes: 163
Antigüedad: 17 años
Puntos: 2
Respuesta: Pasando a una función una Structure por valor (ByVal)

Hola,
Explica algo más ya que no te acabo de entender.
__________________
http://literaturaprogramada.blogspot.com.es/
literaturapogramada.blogspot - Reflexiones mundanas sobre la programación
  #5 (permalink)  
Antiguo 20/05/2009, 09:00
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasando a una función una Structure por valor (ByVal)

Sí, a ver... La cuestión es que me gustaría saber cómo puedo pasar información de un formulario a otro sin tener que crear módulos donde almacenar todas las variables.

Actualmente estoy intentando acceder desde un formulario a la variable de otro formulario distinto y guardar información en dicha variable. El problema es que en realidad no se está guardando dicho valor...

Alguna solución? Gracias!
  #6 (permalink)  
Antiguo 23/05/2009, 00:21
 
Fecha de Ingreso: abril-2007
Mensajes: 163
Antigüedad: 17 años
Puntos: 2
Respuesta: Pasando a una función una Structure por valor (ByVal)

Hola,
En el constructor del formulario, pásale la estructura por parámetro.
__________________
http://literaturaprogramada.blogspot.com.es/
literaturapogramada.blogspot - Reflexiones mundanas sobre la programación
  #7 (permalink)  
Antiguo 23/05/2009, 12:21
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasando a una función una Structure por valor (ByVal)

No tengo ningún constructor de formulario (creo)...
Existen constructores de formulario en VB.NET?
  #8 (permalink)  
Antiguo 24/05/2009, 03:41
 
Fecha de Ingreso: abril-2007
Mensajes: 163
Antigüedad: 17 años
Puntos: 2
Respuesta: Pasando a una función una Structure por valor (ByVal)

Sí,
Por defecto no aparece, el código es este

public sub new()

InicialiteComponent()
end sub

Al instanciar un form, por defecto estas llamando a este constructor

Puedes hacer otro

public sub new(byRef|byVal NombreVariable as TIPO)

InicialiteComponent()

' TU CODIGO
end sub
__________________
http://literaturaprogramada.blogspot.com.es/
literaturapogramada.blogspot - Reflexiones mundanas sobre la programación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:23.