elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 2 [3]
21  Programación / Programación Visual Basic / Re: [RETO] Alternativa a Instr() en: 1 Enero 2011, 16:10 pm
el proyecto que subieron para probar las funciones tiene errores, lo descargue, y algunos resultados no son correctos.
debajo de main donde dice 'raul388 , pasas los parametros incorrectos:

Código:
    '' ================ COMPROBACION ===========================
    Debug.Print "============ COMPROBACION ============"
        cFirst = InStr(firstPos, SearchString, SearchChar)
        cSecond = InStr(secondPos, SearchString, SearchChar)
        cThird = InStr(thirdPos, SearchString, SearchChar)
    Debug.Print "Valores de InStr: ", , cFirst, cSecond, cThird
   
    ' Raul338
    tFirst = rInStr(firstPos, SearchChar, SearchString)
    tSecond = rInStr(secondPos, SearchChar, SearchString)
    tThird = rInStr(thirdPos, SearchChar, SearchString)
    If tFirst <> cFirst Or tSecond <> cSecond Or tThird <> cThird Then
        Debug.Print "Raul338 no devuelve los mismos valores", tFirst, tSecond, tThird
    End If
   
    ' Miseryk
    tFirst = myInstr(firstPos, SearchString, SearchChar)
    tSecond = myInstr(secondPos, SearchString, SearchChar)
    tThird = myInstr(thirdPos, SearchString, SearchChar)
    If tFirst <> cFirst Or tSecond <> cSecond Or tThird <> cThird Then
        Debug.Print "Miseryk no devuelve los mismos valores", tFirst, tSecond, tThird
    End If

el orden de parametros de instr y myInstr(de Miseryc) son iguales (firstPos, SearchString, SearchChar),  pero en el de raul338 esta al reves (firstPos, SearchChar, SearchString).
22  Programación / Programación Visual Basic / Re: [RETO] Alternativa a Instr() en: 1 Enero 2011, 13:49 pm
hola super bien el reto que has propuesto Mr Frog., aki mi code, esta comentado, lo probe y no tiene fallas.
si le encuentran una falla me dicen y me lanzo del 5to piso.
usa la misma sintaxis que el instr()

Código:
Option Explicit

Public Function Rapidash(Posicion As Long, CadenaDondeBuscar As String, MiCadenaBuscar As String) As Long
    Dim Cadena As String, CadenaBuscar As String
    Cadena = CadenaDondeBuscar
    CadenaBuscar = MiCadenaBuscar
    'si cadena es menor q cadenabuscar, entonces cadenabuscar no esta
    'contenida dentro de cadena
    If Len(Cadena) < Len(CadenaBuscar) Then Exit Function
    'si posicion es mayor a texto, entonces no hay donde buscar
    'porque posicion excede el tamaño de la cadena
    If Posicion > Len(Cadena) Then Exit Function
    'posicion debe ser igual o mayor a1
    If Posicion < 1 Then Exit Function
    'si no hay cadenabuscar salimos
    If Len(CadenaBuscar) = 0 Then Exit Function
    'la cadena serà partida en 2 desde posicion
    'en caso de que posicion sea mayor a 1
    'es para simplificar el trabajo de busqueda
    'extra almacena el tamaño de la primera
    'parte del string partido
    
    Dim Extra As Long
    If Posicion > 1 Then
        'coge la porcion de cadena indicada por Posicion
        'para simplificar la busqueda
        Cadena = Mid(Cadena, Posicion)
        Extra = Posicion - 1
    End If

    Dim arrCad() As String, TamCadenaBuscar As Long, Resul As Long
    TamCadenaBuscar = Len(CadenaBuscar)
    'comprueba si la cadena se encuentra al inicio y le suma
    'lo Extra en caso de que se haya partido la cadena en 2 y sale
    If Left(Cadena, TamCadenaBuscar) = CadenaBuscar Then
        Resul = 1 + Extra
    Else
        'comprueba si la CadenaBuscar existe dentro
        'de cadena
        Dim tmp As String
        tmp = Replace(Cadena, CadenaBuscar, "")
        'si no varia el tamaño kiere decir
        ' q "NO" se encontro CadenaBuscar y sale
        'esto es para no caer en el split
        'y se produzca un error al sumar
        'el len(arrCad(0)), ya q si split falla
        'no habrà el inidce cero "0"
        If Len(tmp) = Len(Cadena) Then
            Exit Function
        End If
        'si llega aki entonces se encontro la CadenaBuscar
        arrCad = Split(Cadena, CadenaBuscar)
        'suma el extra y el tamaño
        'arrCad(0) simpre va contener el string
        'anterior a cadenabuscar, por eso la suma de abajo
        Resul = Len(arrCad(0)) + 1 + Extra
    End If
    
    Rapidash = Resul
End Function

Código:
Private Sub Form_Load()
    Dim Pos As Long
    Dim UnaCadena As String
    Dim CadenaBuscar As String
    UnaCadena = "hola que tal viejo, me llamo pepe"
    CadenaBuscar = "viejo"
    Pos = Rapidash(1, UnaCadena, CadenaBuscar)
    MsgBox "Resultado Rapidash: " & Pos
    Pos = InStr(1, UnaCadena, CadenaBuscar)
    MsgBox "Resultado InStr: " & Pos
End Sub

salu2
Páginas: 1 2 [3]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines