canal visual basic .net

Recursos Visual Basic.NET, VB.NET, Manuales de programación, Tutoriales, Foros de programación, Comunidad de programadores

Usuarios activos:  34

Foros de programación, recursos, tutoriales, sistemas operativos...

Bienvenido a la zona de foros. Participa en alguno de nuestros foros: Foros de visual basic, foros de visual basic.net foros de Crystal reports, programas gratis, foros de C++ - C# , foros de Java, foros de PHP, foros de ASP.net. Seguro que hay un foro que te servirá de gran utilidad y si no lo encuentras avísanos y crearemos uno nuevo.
Resultados 1 al 5 de 5
  1. #1
    shiningp está desconectado Member Iniciad@
    Fecha de ingreso
    29 mar, 07
    Mensajes
    47

    Predeterminado

    Hola tengo las siguientes definiciones

    Public arreglo1() as new Clase1
    public arreglo2() as new Clase2

    lo que quiero hacer es una funcion donde no importa cual de los arreglos envie, estos igual sean recorridos dentro de la funcion algo asi como:

    Private Sub sindescarte(Byval arreglo As Collection)
    Dim element As Variant
    For Each element In arreglo
    If element Is Nothing Then
    Else

    cmbforma.AddItem element.strnombre

    End If

    Next
    End Sub


    Ambos elementos de los arreglos tienen la propiedad strnombre, pero en el envio de parametros Collection es incorrecto, alguien me puede decir que debo poner en su lugar. Gracias, espero haberme explicado

  2. #2
    Avatar de [EX3]
    [EX3] está desconectado Moderador Guru
    Fecha de ingreso
    08 dic, 05
    Ubicación
    Fuenlabrada, Madrid
    Mensajes
    1,394

    Predeterminado

    Tienes que diferenciar lo que es una coleccion de un array ya que no son la misma cosa, el primero es un objeto y el otro no. Tienes que definir el parametro de la siguiente forma para que te admita cualquier tipo de array de objetos, como seria una clase, como parametro:
    Código:
    Private Sub sindescarte(Byval arreglo() As Object)
    Y lo mismo sucede, no puedes un For Each con arrays, a no ser que sean de tipo Variant y un Variant no puede recoger objetos. Tendras que recorrer el array mediante un indice:
    Código:
    Dim i As Long
    For i = Lbound(arreglo) To Ubound(arreglo)
     arreglo(i) = ...
    Next i
    Salu2...

    Cada vez que se alinean los planetas me paso de visita por el foro

    dx_lib32: Programa juegos en Visual Basic 6.0 y Visual Basic .NET con la potencia de DirectX 8.1
    Version 2.2.0 final publicada

  3. #3
    shiningp está desconectado Member Iniciad@
    Fecha de ingreso
    29 mar, 07
    Mensajes
    47

    Predeterminado

    Disculpa Ex3, pero la respuesta que me diste me genera error, en primera porque no podemos enviar como parametro un arreglo Byval, debe ser ByRef, y aun cuando le cambio esto, me dice que se esperaba una matriz o un tipo definido por el usuario.

    Espero que alguien me pueda decir cual es el error.

  4. #4
    Avatar de [EX3]
    [EX3] está desconectado Moderador Guru
    Fecha de ingreso
    08 dic, 05
    Ubicación
    Fuenlabrada, Madrid
    Mensajes
    1,394

    Predeterminado

    Lo del ByVal es por utilizar tu codigo para la rectificacion, solo modifique el tipo de dato del parametro. Sobre el error de paso del array, el tipo Object como comento arriba, puede hacer referencia a cualquier tipo de dato objeto como es una clase por ejemplo, este ejemplo lo demuestra:
    Código:
    Dim c As New Class1
    Dim o As Object
     
    Set o = c
    Pero al pasar un array de un tipo de objeto determinado a un parametro de tipo Object parece ser que no lo entiende como tal. Yo generalmente en estas circunstancias me ha sucedido al reves, suelo trabajar con una lista generica de tipo Object a la que a cada elemento le asigno una referencia a una clase concreta, por lo que el paso de arrays como parametro no me produce error, un ejemplo:
    Código:
    Option Explicit
    
    Private Sub Form_Load()
     Dim a() As Object
     ReDim a(3)
     
     Call MiFuncion(a)
     
    End Sub
    
    Sub MiFuncion(lista() As Object)
     Dim i As Long
     For i = LBound(lista) To UBound(lista)
     Set lista(i) = New Class1
     Next i
    End Sub
    Salu2...
    Cada vez que se alinean los planetas me paso de visita por el foro

    dx_lib32: Programa juegos en Visual Basic 6.0 y Visual Basic .NET con la potencia de DirectX 8.1
    Version 2.2.0 final publicada

  5. #5
    shiningp está desconectado Member Iniciad@
    Fecha de ingreso
    29 mar, 07
    Mensajes
    47

    Predeterminado

    Que bien, solo tuve que cambiar la definicion de mis arreglos. Todo listo. Ex3lente!Edited by: shiningp

Temas similares

  1. Enviar parametros a un Procedimiento Almacenado
    Por Rawl en el foro Bases de datos, ADO , ADO.NET
    Respuestas: 4
    Último mensaje: 04/03/2009, 15:52
  2. Enviar parametros a subreporte de crystal
    Por diapli en el foro Visual Basic 6.0
    Respuestas: 0
    Último mensaje: 26/11/2008, 12:42
  3. Enviar parametros a consulta en access desde vb6
    Por NuniS en el foro Visual Basic 6.0
    Respuestas: 2
    Último mensaje: 13/05/2008, 09:40
  4. ENVIAR PARAMETROS A SQL-2000
    Por patoog en el foro Bases de datos, ADO , ADO.NET
    Respuestas: 0
    Último mensaje: 09/09/2007, 10:50
  5. Descargar elementos de arreglos
    Por shiningp en el foro Visual Basic 6.0
    Respuestas: 7
    Último mensaje: 10/05/2007, 15:16

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Visual Studio .VisualBasic.net .ADO.NET .ASP.NET .Framework .Crystal report
[Visual Basic .NET · Información legal · Condiciones de uso · Publicidad · Contacto · RSS novedades Foro · Inicio]
Un sitio web de Internelia (Ontecnia) © Copyright 2013 canalvisualbasic.net. Todos los derechos reservados