Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Estructura en VB

Estas en el tema de Estructura en VB en el foro de Visual Basic clásico en Foros del Web. Hola, me estoy iniciando en este lenguaje y me he liado un poco con el tema de crear un tipo de dato. El caso esque ...
  #1 (permalink)  
Antiguo 05/01/2010, 06:15
poi
 
Fecha de Ingreso: octubre-2008
Mensajes: 73
Antigüedad: 15 años, 6 meses
Puntos: 2
Estructura en VB

Hola, me estoy iniciando en este lenguaje y me he liado un poco con el tema de crear un tipo de dato.
El caso esque creo la estructura como private y la puedo manejar bien desde las funciones pero no me deja pasar ese tipo de dato como parametro a una funcion y si la creo como Public me manda un error.

Código:
Option Explicit
Type Persona
    Nombre As String
    Ape1 As String
    Ape2 As String
    CP As String
    Poblacion As String
    DNI As String
End Type

Public cantidad As Integer
Dim vector() As Persona

Sub AbrirFichero(vector() As Persona)

End Sub

Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)
    cantidad = 0
    AbrirFichero (vector)
End Sub

Private Sub Aceptar_Click()
    Dim p As Persona
    
    If Len(Nombre.Text) <= 20 And Len(Ape1.Text) <= 20 And Len(Ape2.Text) <= 20 _
        And Len(Nombre.Text) > 0 And Len(Ape1.Text) > 0 And Len(Ape2.Text) > 0 Then
        
        If Len(CP.Text) = 5 Then
            
            If Len(Poblacion.Text) > 0 And Len(Poblacion.Text) < 20 Then
                
                If Len(DNI.Text) = 8 Then
                
                    ReDim Preserve vector(1 To cantidad + 1) 'Redimensiona el vector
                    cantidad = cantidad + 1
                    MsgBox ("Inscripcion Correcta: " & cantidad)
                    p.Nombre = Nombre.Text
                    p.Ape1 = Ape1.Text
                    p.Ape2 = Ape2.Text
                    p.CP = CP.Text
                    p.Poblacion = Poblacion.Text
                    p.DNI = DNI.Text
                    vector(cantidad) = p 'Guarda en el vector
                Else
                    MsgBox ("Error en el DNI")
                End If
            
            Else
                MsgBox ("Error en la poblacion")
            End If
        
        Else
            MsgBox ("Error en el Codigo Postal, debe contener 5 digitos")
        End If
        
        
    Else
        MsgBox ("Error en el nombre")
    End If
    
    
    
End Sub
Solo tengo este fichero y me sale este error:

Imposible definir un tipo Public definido por el usuario dentro de un modulo e objeto.

Gracias
  #2 (permalink)  
Antiguo 05/01/2010, 08:27
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 4 meses
Puntos: 53
Respuesta: Estructura en VB

Hola:

Los Type, no pueden definirse dentro del código de formulario, debes añadir un módulo y copiar el Type en el código del mismo.

Menu - Proyecto - Agregar Modulo, luego pegas el código

[En el Modulo]

Option Explicit
Type Persona
Nombre As String
Ape1 As String
Ape2 As String
CP As String
Poblacion As String
DNI As String
End Type

Public Vector As Persona

De todos modos, y ya que empiezas, yo utilizo los Type y suelo hacerlo de la siguiente manera, que me facilita la comprensión del código:

Option Explicit
Type CamposPersona
Nombre As String
Ape1 As String
Ape2 As String
CP As String
Poblacion As String
DNI As String
End Type

Public RegistroPersona As CamposPersona

Como ves es lo mismo pero mas facil de entender

Por otra parte como lo tienes definido en un módulo como publico, no es necesario que lo pases al Sub ya que este puede acceder al mismo sin problemas, aunque sean distintos formularios.

Si no deseas que esté compartido, deberás crearlo dentro del código de formulario en lugar de crearlo en el módulo, pero SOLO el DIM

[En el formulario]

Option Explicit
Public RegistroPersona As CamposPersona

Si estas empezando, lo mas importante es saber el alcance de acceso a las variables entre Módulos y Formulario.

Saludos

Etiquetas: estructura, vb
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 14:55.