Programación General > Visual Basic para principiantes

 consulta sobre funciones!!!

<< < (2/3) > >>

m0skit0:
Hola de nuevo querido la mole p  ;)


--- Cita de: "la mole p" ---mosquito hice lo que me dijiste
--- Fin de la cita ---
Bueno, yo tampoco te he dicho que hicieras nada, sino simplemente que estaba mal planteado.


--- Cita de: "la mole p" ---entonces supongamos que yo quiero usarla para 2 matrices en distintas partes de mi codigo solo haria algo asi:

matriz1_filtrada=filtro(matriz1)
matriz2_filtrada=filtro(matriz2)

mi duda es si se pued y como lo puedo hacer?????
--- Fin de la cita ---
Lo siento, tal y como lo pones en VB6 no se puede hacer porque las funciones no pueden devolver vectores. En tu ejemplo pones que filtro() devuelve un vector, cosa que no se puede hacer en VB.

¿Cómo puedes mandar un vector a una función y que te lo modifique? Usando una subrutina y pasando el vector por referencia, esto es:


--- Código: Visual Basic ---Sub filtro(M() As Integer, ByRef N() As Integer) y llamando a la subrutina tal que así:


--- Código: Visual Basic ---filtro(matriz1, matriz1_filtrada) Saludos y te aconsejo que estudies un poco más las especificidades de VB6, veo que estás muy verde. ¡A darle caña!  ^_^

la mole p:
si lo se mosquito, soy tu dolor de cabeza jijiji :P

gracias por la ayuda, si la verdad que si estoy verde, en mi especialidad no nos enseñan mucho sobre programacion, se que me falta mucho todavia por aprende,por eso toy q leo y leo tutoriales y sobre todo xq me gusta mucho y de esto quiero vivir  :comp:  :) .Te pregunte lo de funciones con arrays xq en ninguno de los tutotiales q lei antes de pensar en molestarte de nuevo :unsure:  en ninguna parte me decian que una funcion nunca podria devolver un array, bueno de todas maneras gracias por el dato :good: .

arigato gosaimashita!!!!

Nebire:

--- Cita de: "m0skit0" ---
--- Cita de: "la mole p" ---entonces supongamos que yo quiero usarla para 2 matrices en distintas partes de mi codigo solo haria algo asi:

matriz1_filtrada=filtro(matriz1)
matriz2_filtrada=filtro(matriz2)

mi duda es si se pued y como lo puedo hacer?????
--- Fin de la cita ---
Lo siento, tal y como lo pones en VB6 no se puede hacer porque las funciones no pueden devolver vectores. [/size]En tu ejemplo pones que filtro() devuelve un vector, cosa que no se puede hacer en VB.

¿Cómo puedes mandar un vector a una función y que te lo modifique? Usando una subrutina y pasando el vector por referencia, esto es:
--- Fin de la cita ---

Esto es erróneo, una función puede recibir y devolver matrices sin ningún tipo de problemas...
para demostrarlo un pequeño ejemplo:

--- Código: Visual Basic --- Dim A2() As IntegerDim A3() As Integer  Private Sub Command1_Click()    Dim k As Integer, t As Integer    Dim s As String        '=======================    A3 = sumarMatriz(A2, 50)    ' aquí se llama a una función, envía una matriz y recibe una matriz....    '=======================    For k = 0 To 2        For t = 0 To 3            s = s & CStr(A3(k, t)) & " , "        Next    Next    MsgBox sEnd Sub Private Sub Form_Load()    Dim k As Integer, t As Integer    ReDim A2(0 To 2, 0 To 3)    For k = 0 To 2        For t = 0 To 3            A2(k, t) = n            n = n + 1        Next    NextEnd Sub  Private Function sumarMatriz(ByRef m() As Integer, ByVal incremento As Integer) As Integer()    Dim k As Integer, t As Integer    Dim tmp() As Integer        ReDim tmp(0 To 2, 0 To 3)    For k = 0 To 2        For t = 0 To 3            tmp(k, t) = m(k, t) + incremento        Next    Next    sumarMatriz = tmpEnd Function  
en el ejemplo  los elementos de la matriz A2  toma valores 0,1,2.... cuando pulsamos el botón que invoca la función suma 50 a cada valor y lo recibe de vuelta, en ningún momento existe un error por ello, llevo demasiados años usando matrices como devolución de funciones... No sé que versión usas de VB6... pero a mi nunca me ha dado error en inguna versión de las que he usado.

F_Tanori:
Bueno...

Tu funcion da error por que no estas recibiendo los parametros como arreglos (te faltan los parentesis a los parametros)


--- Código: Visual Basic --- Function filtro(M As Integer, N As Integer)  
Esto es


--- Código: Visual Basic --- Function filtro(M() as Integer, N() as Integer)  
Ahora tu funcion no hace nada porque no realiza ninguna iteracion ya que el valor hasta (H) en el for no esta inicializada
al igual que W en el for interior

Ademas de que tu funcion no realiza el "return"



--- Código: Visual Basic --- Function filtro(M() as Integer, N() as Integer)    ...    filtro = N    ...End function  
Como dijo m0skit0, puedes usar un SUB y modificar los arreglos por referencia, y lo que te recomendo no fue igual a lo que hiciste


--- Cita de: "m0skit0" ---Pero debería ser, acorde con la cabecera de la función, algo como:


--- Código: Visual Basic ---   filtro(M2, M3)  
--- Fin de la cita ---



--- Cita de: "la mole p" ---...mosquito hice lo que me dijiste, pero creo que no sustente bien mi idea...

--- Fin de la cita ---

al parecer no porque seguiste intentando devolver resultado


--- Código: Visual Basic ---     matriz1_filtrada=filtro(matriz1)    matriz2_filtrada=filtro(matriz2)  
Y como bien apunta Nebire es muy facil y sin problemas devolver un arreglo o matriz en VB, en mi caso lo he usado comunmente como ejemplo que se me ocurre de momento  la funcion Split


Saludos

m0skit0:

--- Cita de: "m0skit0" ---en VB6 no se puede hacer porque las funciones no pueden devolver vectores
--- Fin de la cita ---
:bad:  :bad:  :bad:

Lamentable... Pues juraría que lo intenté y no me funcionó... En fin, me queda el consuelo de que de mi manera también funciona...  :(  :(

 :hola:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa