Programación General > Visual Basic para principiantes
consulta sobre funciones!!!
la mole p:
hola a todos!
necesito crear una funcion en VB6.0 de un filtro espacial, este es el codigo que quiero trabajar en una funcion:
--- Código: Visual Basic ---For j = 2 To H - 1 For i = 2 To W - 1 M3(j, i) = (4 * M2(j, i) + M2(j - 1, i - 1) + 2 * M2(j - 1, i) + 2 * M2(j, i - 1) + 2 * M2(j + 1, i) + 2 * M2(j, i + 1) + M2(j + 1, i + 1) + M2(j + 1, i - 1) + M2(j - 1, i + 1)) / 16 If M3(j, i) > 128 Then M3(j, i) = 255 Else M3(j, i) = 0 End If Next iNext j
alguien que me puedo ayudar con la sintaxis, quedaria muy agradecido!!
Slds.
m0skit0:
No entiendo cuál es la pregunta o duda... La sintaxis es correcta.
la mole p:
--- Cita de: "m0skit0" ---No entiendo cuál es la pregunta o duda... La sintaxis es correcta.
--- Fin de la cita ---
mosquito me referia a como seria la sintaxis de la funcion que tengo q crear, mira te doy un ejemplo de uno de mis intentos fallidos:
--- Código: Visual Basic ---Function filtro(M As Integer, N As Integer)For j = 2 To H - 1 For i = 2 To W - 1 N(j, i) = (4 * M(j, i) + M(j - 1, i - 1) + 2 * M(j - 1, i) + 2 * M(j, i - 1) + 2 * M(j + 1, i) + 2 * M(j, i + 1) + M(j + 1, i + 1) + M(j + 1, i - 1) + M(j - 1, i + 1)) / 16 If N(j, i) > 128 Then N(j, i) = 255 Else N(j, i) = 0 End If Next iNext jEnd Function
y para usarla:
--- Código: Visual Basic ---Private Sub Command1_Click()Picture3.ClsM3 = filtro(M2)End Sub
y me sale un mensaje q dice "tipo de aurgmento byref no coincide"
help me please!!!
m0skit0:
Ah, bueno, esto es otra cosa, mole_p. Si lo hubieras formulado desde un principio así...
Primero, declaras la función como:
--- Código: Visual Basic ---Function filtro(M As Integer, N As Integer) Pero luego la llamas como:
--- Código: Visual Basic ---M3 = filtro(M2)
Pero debería ser, acorde con la cabecera de la función, algo como:
--- Código: Visual Basic ---filtro(M2, M3) De todas formas, deberías usar un Sub y no una Function ya que no devuelves ningún valor.
la mole p:
mosquito hice lo que me dijiste, pero creo que no sustente bien mi idea, lo que yo quiero hacer es una funcion la cual pueda utilizar para la matriz que yo quiera pasarle el filtro sin tener que escribir todo el codigo de nuevo, por ejemplo:
1. Function filtro(la matriz que voy a ingresar(M) As Integer, la matriz resultado(N) As Integer)
2. For j = 2 To H - 1
3. For i = 2 To W - 1
4. N(j, i) = (4 * M(j, i) + M(j - 1, i - 1) + 2 * M(j - 1, i) + 2 * M(j, i - 1) + 2 * M(j + 1, i) + 2 * M(j, i + 1) + M(j + 1, i + 1) + M(j + 1, i - 1) + M(j - 1, i + 1)) / 16
5. If N(j, i) > 128 Then
6. N(j, i) = 255
7. Else
8. N(j, i) = 0
9. End If
10. Next i
11. Next j
12. End Function
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?????
gracias y slds!!
Navegación
[#] Página Siguiente
Ir a la versión completa