Programación General > Visual Basic para principiantes

 Arreglo Como Parametro en Procedimiento VB 6.0

(1/3) > >>

MArio85:
Hola Como puedo hacer para utilizar como parametro un arreglo dinamico global dentro de un procedimiento?
Necesito un procedimiento ya que necesito modificar mas de 1 arreglo por lo que no puedo usar una funcion.
Masomenos lo que quiero hacer seria algo asi:


--- Código: Text ---Sub Modi_array(arreglo1 as type1, arreglo2 as type2)Dim temp1 as type1Dim temp2 as type2 If  "Condicion " then       redim preserve temp1(i)       i = i+1endifIf  "Condicion " then       redim preserve temp2(j)       j = j+1endif arreglo1 = temp1arreglo2 = temp2  
Otra cosa es que no se si tenga que usar el Byval en el parametro del arreglo ya que si quiero modificar el arreglo globalmente.

Gracias
Saludos!

m0skit0:
Perdona mi poco vocaburio iberoamericano, ¿pero con arreglo te refieres a un array/vector?

cpmario:
Si deseas colocar un array en forma global debes de dimensionarlo en un módulo BAS por ejemplo


--- Código: Text ---Public gastrArreglo1() As StringPublic gastrArreglo2() As String 
En el código que colocas estás haciendo mezclas con el otro tipo de Instrucción Type, lo que hace difícil de entender tu código. Type también maneja arrays (arreglos) pero de distinta manera.

Además tienes en la línea Sub Modi_array(arreglo1 as type1, arreglo2 as type2) y en el código que sigue no usas ni arreglo1 ni arreglo2.

Lo que se usa para pasar un arreglo a una subrutina no es ByVal es ByRef, por ejemplo

--- Código: Text ---Sub SortArrayDic(ByRef sArray() As String, lngLenDic As Long) 
 :comp:

m0skit0:
Muy bien explicado, un par de puntualizaciones:


--- Cita de: "cpmario" ---estás haciendo mezclas con el otro tipo de Instrucción Type
--- Fin de la cita ---

No usa la instrucción Type en su código.


--- Cita de: "cpmario" ---Lo que se usa para pasar un arreglo a una subrutina no es ByVal es ByRef
--- Fin de la cita ---

Eso no es así. El arreglo se puede pasar ByVal (que es lo mismo que si no pones nada) o ByRef. La diferencia es, como su nombre indica, que lo pasas por valor (By Value) o por referencia (By Reference). En el primer caso a la función se le pasa una copia del vector y no el original, por lo que los cambios hechos en él desaparecerán al acabar la función. En el segundo caso se pasa la dirección de memoria (puntero) del vector, con lo que los cambios hechos dentro de la función sí serán permanentes.


--- Cita de: "MArio85" ---redim preserve temp1(i)
--- Fin de la cita ---

Además no sirve que pongas preserve puesto que el vector no tiene nada con anterioridad.  :P

cpmario:
Si lo que desea MArio85 es "un arreglo dinámico global"
Entonces se necesita ByRef y no ByVal

 :comp:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa