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

TDU y arrays

Estas en el tema de TDU y arrays en el foro de Visual Basic clásico en Foros del Web. Chicos buenos dias. Necesito que alguien me oriente, paso a comentar. Estoy realizando un TP para la facu en VB6 en el cual debo hacer ...
  #1 (permalink)  
Antiguo 13/02/2014, 05:28
(Desactivado)
 
Fecha de Ingreso: febrero-2014
Mensajes: 21
Antigüedad: 10 años, 2 meses
Puntos: 0
TDU y arrays

Chicos buenos dias.

Necesito que alguien me oriente, paso a comentar. Estoy realizando un TP para la facu en VB6 en el cual debo hacer un aplicación para un biblioteca donde el usuario pueda ingresar una serie de datos (TDU) como por ejemplo editorial, nombre del libro y demas. No tengo muy bien en claro como rrecorrer esos datos definidos por el usaurio mediante un arreglo.


Logicamente lo codifico asi:

Código:
'Primero defino el TDU 

Public Type TDUBiblioteca 
ID As Integer 
titulo As String 
autores As String 
editorial As String 
ano As Integer 
paginas As Integer 
comentarios As String 
End Type 

'creo el arreglo dinamico 
Dim libro as TDUBiblioteca 
'Creo una variable del tipo TDU 
DIM biblioteca as TDUBiblioteca 

'Desde un formulario tomo los datos y los inserto 
TituloTxt.Text = biblioteca.titulo 
AutoresTxt.Text = biblioteca.autores 
EditorialTxt.Text = biblioteca.editorial 
AnoTxt.Text = biblioteca.ano 
PaginasTxt.Text = biblioteca.paginas 
ComentariosTxt.Text = biblioteca.comentarios 


'y ahora trato de rrecorrerlo y mostrarlo 
for i = 0 to 6 
biblioteca(i) = libros(i) 
Next i 

msgbox (biblioteca(i))

Sinceramente me gustaria que alguien me lo explique y poder deducirlo yo mismo.

Desde ante mano GRACIAS !!!

Última edición por pablOOO5; 13/02/2014 a las 05:34
  #2 (permalink)  
Antiguo 13/02/2014, 18:10
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: TDU y arrays

Hola. Me parece que tienes un problema con lo que es el tema de los arrays o vectores. En tu código nunca creas uno, simplemente biblioteca es lo mismo que libro (y no debería serlo). Esto debe ser lo que quieres:

Código vb:
Ver original
  1. 'creo el arreglo dinamico
  2. Dim libro as TDUBiblioteca
  3. 'Creo una variable del tipo TDU
  4. Dim biblioteca(7) as TDUBiblioteca

Pues en ese caso biblioteca ahora sí es un arreglo que contiene 7 espacios (del 0 al 6) para datos del tipo TDUBiblioteca (que serían libros).

Con respecto a las cajas de texto estás haciendo la asignación al revés. Si quieres asignarle el valor de TituloTxt a un libro de la biblioteca deberías hacer:

Código vb:
Ver original
  1. biblioteca(0).titulo = TituloTxt.Text

Así que quedaría mas o menos así:

Código vb:
Ver original
  1. 'Primero defino el TDU
  2.  
  3. Private Type TDUBiblioteca
  4. ID As Integer
  5. titulo As String
  6. autores As String
  7. editorial As String
  8. ano As Integer
  9. paginas As Integer
  10. comentarios As String
  11. End Type
  12.  
  13. Private Sub Form_Load()
  14.  
  15. 'creo el arreglo dinamico
  16. Dim libro As TDUBiblioteca
  17. 'Creo una variable del tipo TDU
  18. Dim biblioteca(7) As TDUBiblioteca
  19.  
  20. 'y ahora trato de rrecorrerlo y mostrarlo
  21. For i = 0 To 6
  22.     biblioteca(i).ID = 1000
  23.     biblioteca(i).titulo = "El Alquimista"
  24.     ' Etc.
  25. Next i
  26.  
  27. MsgBox (biblioteca(0).titulo)
  28.  
  29. End Sub

Aunque aún así a ese código le falta trabajo (es que estoy algo apurado).

Espero que te sirva, mira el codigo y avisame a ver cuales son tus dudas!

  #3 (permalink)  
Antiguo 14/02/2014, 13:31
(Desactivado)
 
Fecha de Ingreso: febrero-2014
Mensajes: 21
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: TDU y arrays

Muchas gracias Carbon ahora trato de codificarlo, mas tarde subo como queda.
  #4 (permalink)  
Antiguo 15/02/2014, 09:04
(Desactivado)
 
Fecha de Ingreso: febrero-2014
Mensajes: 21
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: TDU y arrays

Carbon no lo he podido codificar. El proble lo tengo cuando tengo que pasar los datos del TDU/UDT al arrays dinamico; Es decir, no se como rrecorrer la variable de accesos (biblioteca) asignandolo al arrays dinamico libros que es el que va guardar el registro.

Te muestro como queda:

Este codigo esta asociado al boton guardar del formulario.

Código vb:
Ver original
  1. Private Sub GuardarCmd_Click()
  2.  
  3. Dim i As Integer
  4.  
  5.  
  6. 'Array dinamico
  7. Dim libros() As TDUBiblioteca
  8. 'Dim biblioteca(6)
  9. Dim biblioteca() As TDUBiblioteca
  10. 'Asigno los datos cargados
  11.    biblioteca(0).titulo = TituloTxt.Text
  12.     biblioteca(1).autores = AutoresTxt.Text
  13.     biblioteca(2).editorial = EditorialTxt.Text
  14.     biblioteca(3).anio = AnioTxt.Text
  15.     biblioteca(4).paginas = PaginasTxt.Text
  16.     biblioteca(5).comentarios = ComentariosTxt.Text
  17.            
  18. For i = 0 To 5
  19.     libros(i) = biblioteca(i)
  20. Next i
  21.  
  22.  
  23. End Sub

Este es un modulo estandard:

Código vb:
Ver original
  1. Option Explicit
  2. 'Creo TDU
  3. Public Type TDUBiblioteca
  4.     titulo As String * 50
  5.     autores As String * 50
  6.     editorial As String * 50
  7.     anio As Long
  8.     paginas As Long
  9.     comentarios As String * 250
  10. End Type


Aqui declaro el TDU

El error, y es una duda que tengo es sobre la variable de acceso biblioteca cuando la recorro con el FOR. No se si deberia declarar como un array para rrecorrerla o si deberia recorrerla por posiciones cosa que se me acaban las ideas. He tratado de varias formas y tambien llegue a la conclusion de que tal vez deberia declarar una variable para los tipos de datos que paso de la variable de acceso al array dinamico libros, o no.

Gracias de ante mano !
  #5 (permalink)  
Antiguo 15/02/2014, 10:37
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: TDU y arrays

Hola, el problema es que no estás especificando la cantidad de "espacios" que tiene el array. Debería ser así:

Código vb:
Ver original
  1. Private Sub GuardarCmd_Click()
  2.  
  3. Dim i As Integer
  4.  
  5.  
  6. 'Array dinamico
  7. Dim libros(6) As TDUBiblioteca
  8. 'Dim biblioteca(6)
  9. Dim biblioteca(6) As TDUBiblioteca
  10. 'Asigno los datos cargados
  11.    biblioteca(0).titulo = TituloTxt.Text
  12.     biblioteca(1).autores = AutoresTxt.Text
  13.     biblioteca(2).editorial = EditorialTxt.Text
  14.     biblioteca(3).anio = AnioTxt.Text
  15.     biblioteca(4).paginas = PaginasTxt.Text
  16.     biblioteca(5).comentarios = ComentariosTxt.Text
  17.            
  18. For i = 0 To 5
  19.     libros(i) = biblioteca(i)
  20. Next i
  21.  
  22.  
  23. End Sub

Además no entiendo por qué haces esto:

Código vb:
Ver original
  1. biblioteca(0).titulo = TituloTxt.Text
  2.     biblioteca(1).autores = AutoresTxt.Text
  3.     biblioteca(2).editorial = EditorialTxt.Text
  4.     biblioteca(3).anio = AnioTxt.Text
  5.     biblioteca(4).paginas = PaginasTxt.Text
  6.     biblioteca(5).comentarios = ComentariosTxt.Text

Allí le estás poniendo un título al libro 0 (pero te estas olvidando de todos los demás datos). al igual que con el libro 1, sólo le estás añadiendo los autores. Lo mismo el 2, solo le añades la editorial, y así sucesivamente. Por ejemplo, si quieres añadirle los datos completos al libro que se encuentra en la posición 0 de la biblioteca deberías hacer:

Código vb:
Ver original
  1. biblioteca(0).titulo = TituloTxt.Text
  2.     biblioteca(0).autores = AutoresTxt.Text
  3.     biblioteca(0).editorial = EditorialTxt.Text
  4.     biblioteca(0).anio = AnioTxt.Text
  5.     biblioteca(0).paginas = PaginasTxt.Text
  6.     biblioteca(0).comentarios = ComentariosTxt.Text

Te recomiendo que leas un poco más sobre lo que es arrays en general.

  #6 (permalink)  
Antiguo 15/02/2014, 12:32
(Desactivado)
 
Fecha de Ingreso: febrero-2014
Mensajes: 21
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: TDU y arrays

Tenes razón. Estuve leyendo y estaba haciendo cualquier cosa.
Ahora tengo que codificar casi todo de nuevo.

Es raro, no encontré un tema similar en el foro parecido a este. O es muy fácil y yo no lo entiendo, o que sera?

Cualquier otra duda puedo preguntar de nuevo ?


Gracias!
  #7 (permalink)  
Antiguo 15/02/2014, 13:20
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: TDU y arrays

Pues claro que puedes preguntar, para eso estamos De paso reactivo un poco mi VB6!

Por cierto, por qué usas Visual Basic 6? Sabes que es un lenguaje super obsoleto no?
  #8 (permalink)  
Antiguo 15/02/2014, 15:16
(Desactivado)
 
Fecha de Ingreso: febrero-2014
Mensajes: 21
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: TDU y arrays

Si. Pero nos están enseñando con esa versión. Incluso tuve problemas para instalarlo ya que la aplicación es de 32 bits.

Mira, no si esta bien lógicamente planteado:

Código vb:
Ver original
  1. Public Sub GuardarCmd_Click()
  2.  
  3. 'Variables contadores
  4. Dim i As Integer, min As Integer, max As Integer
  5. 'Arrays dinamico
  6. Dim libros() As TDUBiblioteca
  7. min = 0
  8. max = 100
  9.  
  10. 'Variable de acceso TDU
  11. Dim biblioteca() As TDUBiblioteca
  12.  
  13. 'Control de menos de 100 libros
  14. If min <= 100 Then
  15.     biblioteca(min).titulo = TituloTxt.Text
  16.     biblioteca(min).autores = AutoresTxt.Text
  17.     biblioteca(min).editorial = EditorialTxt.Text
  18.     biblioteca(min).anio = AnioTxt.Text
  19.     biblioteca(min).paginas = PaginasTxt.Text
  20.     biblioteca(min).comentarios = ComentariosTxt.Text
  21. Else
  22.     MsgBox ("Cantidad maxima de libros alcanzados")
  23.     End
  24. End If
  25. 'Fin control
  26.  
  27. 'Redimensiono la cantida de libros en el arrays
  28. ReDim libros(min) As TDUBiblioteca
  29.  
  30. 'Trato de guardar los libros en el arrays
  31. For i = 0 To 5
  32.     libros(min) = biblioteca(min)
  33. Next i
  34.  
  35. 'Sumo la cantidad de libros cargados hasta el momento
  36. min = min + 1
  37. End Sub


Me arroja un error en los sub indices, que esta fuera de intervalo. Seguramente esta mal asociado.

Sera que tendré que declara otra variable local para seguir el contador de libros y otro para los sub indices ?
  #9 (permalink)  
Antiguo 16/02/2014, 13:12
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: TDU y arrays

En las líneas 6 y 11 no estás especificando cuantos elementos quieres que tenga el array. Tampoco lo haces en la línea 28 al hacer "ReDim" (redimensionar). Por ejemplo, si has declarado un array así:

Código vb:
Ver original
  1. Dim biblioteca(6) As TDUBiblioteca

Allí tienes espacio para 6 elementos (del 0 al 5). Luego si necesitas más, por ejemplo, 4 espacios mas haces:

Código vb:
Ver original
  1. ReDim bilbioteca(10) As TDUBiblioteca

Y ahora también tendras espacio del 6 al 9.

Se entiende?

Etiquetas: .net, arrays, 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 12:22.