Esta es una buena alternativa a la función tradicional InStr de VB.

Código: Seleccionar todo

Public Function aInStr(A As Long, B As String, C As String) As Long
On Error Resume Next

'========================================================'
' AX: aInStr '
' Uso: Call aInStr(Inicio, Cadena 1, Cadena 2) '
' '
'========================================================'

Dim F As String
Dim G As String
Dim H As String
Dim X As Long

H = Right(B, Len(B) - 1)

For X = A To Len(B)
F = Mid(H, X - 1, Len(C))
If F = C Then aInStr = X: GoTo Z
Next X

Z:
End Function
Modo de Uso:

Código: Seleccionar todo

Call aInStr(Inicio, Cadena 1, Cadena 2)

Código: Seleccionar todo

http://www.recursosvisualbasic.com.ar/htm/tutoriales/tutorial-basico5.htm#instr
La función InStr de VB sirve para encontrar la posición de una palabra en un texto muy grande. También puedes indicar en cual posición se debe comenzar y es tan útil como la función Mid. Y su utilidad más frecuente es con textos.

Subirimagenes.com
Imagen

ImageShack.us
Imagen


También tiene distintos métodos de comparación...Pero llevando a la práctica esta función: Notepad es un buen ejemplo, ya que esta función es la utilizada para buscar las palabras dentro del texto. Copia un gran texto en el notepad, busca una palabra que se encuentre en el texto y verás que la palabra es encontrada porque ya se conoce la posición exacta de esta en el texto.

También te puede ayudar a separar o identificar...Un ejemplo sería un Anti-Noob para la pass de las herramientas.

En un scaner creado en VB6...Necesitas obtener la firma que se encontró y sin esta función sería algo complicado. Pero aquí existen algunos problemas ya que no todos los AV muestran su reporte con una secuencia idéntica, o sea son diferentes y no siempre el archivo está infectado.

Estás son algunas ideas para la práctica...Y la razón de crear funciones iguales a las originales es para de esta forma tener control de estas. Por ejemplo, la función InStr tradicional y esta que publiqué sólo muestran la posición de la primera palabra que encuentran. Imagina que en el texto a buscar la palabra tengo 5 veces la misma palabra.

Código: Seleccionar todo

Public Function aInStr(A As Long, B As String, C As String) As Long
On Error Resume Next

'========================================================'
' AX: aInStr                                             '
' Uso: Call aInStr(Inicio, Cadena 1, Cadena 2)           '
' www.Indetectables.net                                  '
'========================================================'

Dim F As String
Dim G As String
Dim H As String
Dim X As Long

H = Right(B, Len(B) - 1)

For X = A To Len(B)
F = Mid(H, X - 1, Len(C))
If F = C Then MsgBox X
Next X

End Function
Esta es mi función algo modificada...Ahora encontrará las posiciones de todas las palabras que coincidan con la palabra a buscar. Y cómo vez ahí, mostrará un Msgbox o un mensaje cada vez que encuentre la misma palabra. Pero si quisiera la modificaría un poco más para que no mostrara un Msgbox, sino que guardara las posiciones en una String:

Código: Seleccionar todo

Public Function aInStr(A As Long, B As String, C As String) As Variant
On Error Resume Next

'========================================================'
' AX: aInStr                                             '
' Uso: Call aInStr(Inicio, Cadena 1, Cadena 2)           '
' www.Indetectables.net                                  '
'========================================================'

Dim F As String
Dim G As String
Dim H As String
Dim X As Long

H = Right(B, Len(B) - 1)

For X = A To Len(B)
F = Mid(H, X - 1, Len(C))
If F = C Then aInStr = aInStr & X & " "
Next X

End Function
Y también podría hacer que mostrara solamente la última coincidencia...

Código: Seleccionar todo

Public Function aInStr(A As Long, B As String, C As String) As Long
On Error Resume Next

'========================================================'
' AX: aInStr                                             '
' Uso: Call aInStr(Inicio, Cadena 1, Cadena 2)           '
' www.Indetectables.net                                  '
'========================================================'

Dim F As String
Dim G As String
Dim H As String
Dim X As Long

H = Right(B, Len(B) - 1)

For X = A To Len(B)
F = Mid(H, X - 1, Len(C))
If F = C Then aInStr = X
Next X

End Function
Cómo vez puedo manipular esta función para que se adapte a mi código o source del programa y no como la función tradicional, con la que tendrías que adaptar el código a la función.

[Enlace externo eliminado para invitados]

Saludos.
Responder

Volver a “Otros lenguajes”