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

Generar variables de estructura dinámicamente

Estas en el tema de Generar variables de estructura dinámicamente en el foro de .NET en Foros del Web. Mu güenas. Vamos a ver. Tengo definida una estructura de la siguiente manera Código: Structure Visado Public NumColegiado As String Public NumVisado As String Public ...
  #1 (permalink)  
Antiguo 13/10/2004, 12:27
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Generar variables de estructura dinámicamente

Mu güenas.

Vamos a ver. Tengo definida una estructura de la siguiente manera

Código:
Structure Visado
    Public NumColegiado As String
    Public NumVisado As String
    Public NombreCliente As String
    Public NombreEmpresa As String
    ....
End Sctructure
Luego tengo que leer varios archivos de texto tabulados, donde cada campo corresponderá a una de las variables de la estructura. Por lo tanto, creo una variable de mi tipo definido para ir rellenándola. Así quedaría más o menos:

Código:
Dim nuevoVisado As Visado
With nuevoVisado
    .NumColegiado = "54654"
    .NumVisado = "321564"
    .NombreCliente = "Pepe"
    .NombreEmpresa = "Empresarios Sin Escrúpulos SA"
    ....
End With
Hasta aquí todo bien, el problema está en que no es sólo un archivo sino varios, por lo que tendría que declarar varias variables del tipo Visado en tiempo de ejecución: nuevoVisado1, nuevoVisado2, ... Este índice me serviría también a la hora de trabajar con un ListBox en el que cargo los distintos Visados generados.

He intentado meter cada nuevoVisado en un array redimensionando a medida que se creaban, pero no ha resultado. Creo que la solución sigue estando por aquí.

¿Me podéis echar una mano?

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 14/10/2004, 06:09
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
A lo mejor no me he explicado del todo bien, ¿o es que nadie sabe cómo hacerlo?

En fin, una cuestión. ¿Se puede hacer esto?

Código:
Structure Visado()
    Public NumColegiado As String
    Public NumVisado As String
    Public NombreCliente As String
    Public NombreEmpresa As String
    ....
End Structure
Y cada vez que cree una nueva variable de tipo Visado() hacerlo con un índice:

Código:
For i=0 To 9
ReDim Preserve nuevoVisado(i) As Visado()
    With nuevoVisado(i)
        .NumColegiado = "54654"
        .NumVisado = "321564"
        .NombreCliente = "Pepe"
        .NombreEmpresa = "Empresarios Sin Escrúpulos SA"
        ....
    End With
Next
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #3 (permalink)  
Antiguo 14/10/2004, 08:12
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Yo lo haría mas bien con una clase y guardar todos los valores deseados despues en un arraylist...

Ejemplo.

Cita:
Public Class myClass
Public NumColegiado As String
Public NumVisado As String
Public NombreCliente As String
Public NombreEmpresa As String
...
..
End Class
Y despues para llenarla con un ArrayList

Cita:
Dim cClass as myClass
dim arrClass as New ArrayList

For i As Integer = 0 To 9
cClass = new myClass
with cClass
.NumColegiado = "54654"
.NumVisado = "321564"
.NombreCliente = "Pepe"
.NombreEmpresa = "Empresarios Sin Escrúpulos SA"
End With
arrClass.Add(cClass)
Next
Y listo... ya tienes todo en tu arraylist...

Si quieres accesar sería:

Cita:
Dim c as myClass
For i as Integer = 0 to arrClass.Count - 1
c = Ctype(arrClass.Item(i),myClass)
Response.Write (c.NumVisado & " " & c.NombreClient...etc)
Next
Así es como yo lo hago para guardar varios valores en un solo conteneder..

Salu2 y suerte
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 14/10/2004, 09:46
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Gracias por responder, pero lo acabo de resover de otra manera. Sin duda, la tuya será probablemente la más adecuada, pero bueno. Ahora estoy muy pillado de tiempo. Te explicaré más adelante cómo lo hice.

Muchas gracias de nuevo.

La verdad es que estás sumando muchos puntos para moderador :pelota: Uy, pero si ya lo eres.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 14/10/2004, 09:58
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Te explicaré más adelante cómo lo hice.
Ok..,

Cita:
La verdad es que estás sumando muchos puntos para moderador :pelota: Uy, pero si ya lo eres.
Jaja ..
  #6 (permalink)  
Antiguo 14/10/2004, 12:14
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Bueno, vamos allá. No tengo el código delante, pero es algo así:

Defino la estructura normalmente:

Código:
Structure Visado
    Public NumColegiado As String
    ....
End Structure
Y luego simplemente creo un nueva variable del tipo visado así:

Código:
Public Sub cargarVisado(ByVal archivo As String, ByVal i As Integer)
     Dim objReader As New StreamReader(archivo)
     texto = objReader.Read()
     objReader.Close()

     ReDim Preserve visado(i) As Visado
     With visado(i)
          .NumColegiado = texto.Substring(0,12)
          ......
     End with
End Sub
"archivo" e "i" los envío desde la rutina que recorre todos los archivos que hay en una determinada carpeta. El índice "i" me sirve al mismo tiempo para identificar los nombres de los archivos al cargarlos en un ListBox. Cuando quiero acceder a cada una de las variables del tipo Visado desde el ListBox símplemte recojo el índice y llamo a propieadesVisados(i).

Pues básicamente es así. Lo de crear las clases también lo pensé, pero como no iba a necesitar métodos sino solamente cadenas de texto dentro del tipo Visado, me pareció más eficiente una estructura.

Muchas gracias RootK por tu interés.

Un saludo.

Por cierto, dentro de un ratito pongo un nuevo tema. Si es que voy atropellando cosas del ¿dichoso? .Net
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
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 00:23.