Visual Basic - matriz dinamica a un procedimiento

Life is soft - evento anual de software empresarial
 
Vista:

matriz dinamica a un procedimiento

Publicado por edupa (18 intervenciones) el 21/04/2005 20:45:09
Como paso una matriz dinamica a un procedimiento.
La matriz definida es:

public type dat
dato as integer
titulo as string
end type

En el procedimiento lo defino:
dim matriz() as dat

asigno los datos y redimensiono
redim preserve matriz(i)

llamo al procemiento:
call calcular(matriz, dato1, dato2, dato3)

y el procedimiento esta definido:
public sub calcular(matriz as ?, dat1 as integer, dat2 as string, dat3 as integer)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:matriz dinamica a un procedimiento

Publicado por Esteban (1144 intervenciones) el 21/04/2005 23:26:07
Bueno, a lo que se puede entender, requieres del tipo de dato del parámetro que está con ?, ese tipo de dato cuando NO ES OBJETO se llama Variant:

No objeto > Variant
Objeto > Object

Es lo más genérico que puede tener una declaración
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error

Publicado por edupa (18 intervenciones) el 22/04/2005 09:05:52
Al definirlo como variant me da el error:
Only user-defined types in public object module can be coerced to or from a variant or passed to late-bound functions.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:matriz dinamica a un procedimiento

Publicado por Cecilia Colalongo (3116 intervenciones) el 22/04/2005 12:39:49
Lo probé de ésta forma y me funciona:

Public Sub calcular(matriz() As dat, dat1 As Integer, dat2 As String, dat3 As Integer)

El ejemplo que apliqué fue:

Public Type dat
dato As Integer
titulo As String
End Type

Public Sub Main()
Dim matriz() As dat

ReDim Preserve matriz(1 To 2)

matriz(1).dato = 1
matriz(1).titulo = "titulo1"

matriz(2).dato = 2
matriz(2).titulo = "titulo2"

Call calcular(matriz, 1, "dato2", 3)

End Sub

Public Sub calcular(matriz() As dat, dat1 As Integer, dat2 As String, dat3 As Integer)
Dim i As Integer

For i = LBound(matriz) To UBound(matriz)
Debug.Print matriz(i).dato & vbTab & matriz(i).titulo
Next i
End Sub

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar