Página 1 de 1
[RETO] Funcion Instr de vb en vb
Publicado: 13 Abr 2011, 17:27
por linkgl
Bueno pues esta vez aver quien logra hacer una función que haga exactamente lo mismo que Instr en vb e igual que la vez anterior el que se ejecute en menor tiempo es el ganador
El tiempo se medirá de nuevo con CTiming:
viewtopic.php?f=13&t=31591
Voy haciendo la mía :P
Re: [RETO] Funcion Instr de vb en vb
Publicado: 13 Abr 2011, 19:07
por AX
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
Saludos.
Re: [RETO] Funcion Instr de vb en vb
Publicado: 13 Abr 2011, 20:10
por mDrinky
AX escribió: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
Saludos.
No puedes poner un msgbox en medio de la funcion tiene que devolver un valor, igual que instr, y fijate bien porque me parece que no devuelve lo mismo que instr.... az la prueba con la cadena "Hola Mundo"
Voi a crear mi funcionnnn
salu2!!
Re: [RETO] Funcion Instr de vb en vb
Publicado: 13 Abr 2011, 20:51
por AX
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: GoTo Z
Next X
Z:
End Function
El propósito del Msgbox en la función es mencionar todas las coincidencias que existan y no solamente la primera que encuentra, como es el caso de la función InStr original.
Con el Goto todo está resuelto y ahora mi función es idéntica a la original...Sólo muestra la primera coincidencia encontrada.
[Enlace externo eliminado para invitados]
A mi me funciona perfectamente, ahí dejo un ejemplo con las dos funciones iguales. En el TextBox de mayor tamaño deben copiar el texto en el que se desea buscar una cadena, en el otro la cadena a buscar. Los CommandButtons llevan en el caption sus respectivas funciones.
Re: [RETO] Funcion Instr de vb en vb
Publicado: 17 Abr 2011, 17:33
por p0is0n-123
Mi humilde función...
Código: Seleccionar todo
Private Sub Command1_Click()
MsgBox pInStrMod("Indetectables.net_y_punto", ".net")
End Sub
Private Function pInStrMod(clStr As String, clCompare As String) As Integer
Dim Y As Integer
Dim cTemp As String
For Y = 1 To Len(clStr) Step Len(clCompare)
cTemp = Mid(clStr, Y, Len(clCompare))
If cTemp = clCompare Then
pInStrMod = Y
Exit Function
End If
Next Y
End Function
Saludos....
Re: [RETO] Funcion Instr de vb en vb
Publicado: 19 Abr 2011, 04:23
por K-0Z
Código: Seleccionar todo
Public Function KInstr(ByRef StrStart As String, ByRef StrCompare As String) As Integer
KInstr = Len(StrStart) - InStrRev(StrReverse(StrStart), StrReverse(StrCompare))
End Function
Re: [RETO] Funcion Instr de vb en vb
Publicado: 19 Abr 2011, 05:43
por linkgl
El propósito del Msgbox en la función es mencionar todas las coincidencias que existan y no solamente la primera que encuentra, como es el caso de la función InStr original.
Con el Goto todo está resuelto y ahora mi función es idéntica a la original...Sólo muestra la primera coincidencia encontrada.
[Enlace externo eliminado para invitados]
A mi me funciona perfectamente, ahí dejo un ejemplo con las dos funciones iguales. En el TextBox de mayor tamaño deben copiar el texto en el que se desea buscar una cadena, en el otro la cadena a buscar. Los CommandButtons llevan en el caption sus respectivas funciones.
En vez de hacer un msgbox puedes devolver un array :P, perdonen la tardanza voy haciendo el mio
Re: [RETO] Funcion Instr de vb en vb
Publicado: 19 Abr 2011, 19:28
por mDrinky
K-0Z escribió:Código: Seleccionar todo
Public Function KInstr(ByRef StrStart As String, ByRef StrCompare As String) As Integer
KInstr = Len(StrStart) - InStrRev(StrReverse(StrStart), StrReverse(StrCompare))
End Function
No puedes usar InstrRev...
Cuando pueda posteo mi humilde función.
salu2!
Re: [RETO] Funcion Instr de vb en vb
Publicado: 20 Abr 2011, 17:17
por K-0Z
Drinky94 escribió:K-0Z escribió:Código: Seleccionar todo
Public Function KInstr(ByRef StrStart As String, ByRef StrCompare As String) As Integer
KInstr = Len(StrStart) - InStrRev(StrReverse(StrStart), StrReverse(StrCompare))
End Function
No puedes usar InstrRev...
Cuando pueda posteo mi humilde función.
salu2!
No está escrito en las reglas del reto
Re: [RETO] Funcion Instr de vb en vb
Publicado: 21 Abr 2011, 11:21
por mDrinky
No lo pone en las reglas porque es de cajon de madera de pino eso
Re: [RETO] Funcion Instr de vb en vb
Publicado: 25 Abr 2011, 17:31
por Slek
Código: Seleccionar todo
Private Function sInstr(sStart As Long, Str1 As String, Str2 As String) As Long
Dim i As Long, y As Long
Dim A() As Byte, B() As Byte
A = Str1
B = Str2
For i = sStart - 1 To UBound(A()) Step 2
If A(i) = B(0) Then
For y = i To UBound(B()) Step 2
If Not A(y) = B(y) Then Exit For
Next y
Exit For
End If
Next i
sInstr = (i / 2) + 1
End Function
>.< Tarda más que la original, no he podido mejorarlo más...
Saludos!