Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - cobein

#63
Cita de: seba123neo en  3 Junio 2010, 02:32 AM
claro, lo unico que yo nunca la usaria para buscar 2 palabras solas como mostro cobein , que se pueden repetir 500 veces en un texto, la usaria para buscar 2 cadenas bien largas e irrepetibles en el texto, como hice en el ejemplo de la web.

Entiendo lo que decis pero la funcion plantea una palabra y la que le sigue y el codigo NO hace eso por eso la modificacion.
#64
Miraste los ejemplos de Karcrack, son super claros.
#65
Molesto mode

faltan los saltos de linea con system metrics
#67
       
IniPos = Pos(0) + Len(StrIni)
Pos(1) = InStr(IniPos, StrIn, StrFin, Abs(Not ComparacionEstricta))
#68
Todas las funciones esas tiene un problema de logica.....

Si, por ejemplo, hago una busqueda asi
    Const StrOri As String = "Miguel Angel Ortega Avila"
    Const StrIni As String = "El"
    Const StrFin As String = "el"

el resultado va a ser nulo porque se comienza a buscar desde el principio en ambas ocasiones y en realidad la segunda palabra se tiene que buscar a partir del final de la primera.....


Public Function Entre_Texto(ByRef StrIn As String, ByVal StrIni As String, ByVal StrFin As String, Optional ComparacionEstricta As Boolean) As String
    Dim Pos(1) As Long
    Dim IniPos As Long

    If Len(StrIn) Then
        Pos(0) = InStr(1, StrIn, StrIni, Abs(Not ComparacionEstricta))
        If Pos(0) = 0 Then Exit Function
        IniPos = Pos(0) + Len(StrIni)
        Pos(1) = InStr(IniPos, StrIn, StrFin, Abs(Not ComparacionEstricta))
        If Pos(1) = 0 Then Exit Function
        Entre_Texto = Mid$(StrIn, IniPos, Pos(1) - IniPos)
    End If
End Function

Private Sub Form_Load()
    Const StrOri As String = "Miguel Angel Ortega Avila"
    Const StrIni As String = "El"
    Const StrFin As String = "el"

    'MsgBox Text_Between_Words(StrOri, StrIni, StrFin)
    'MsgBox TextoEntreMedio(StrOri, StrIni, StrFin)

    Debug.Print Entre_Texto(StrOri, StrIni, StrFin, True)
    Debug.Print Entre_Texto(StrOri, StrIni, StrFin, False)
End Sub
#69
Sacado de msvbvm60.dll


Module Constants;
GUID = {343DB180-2BCC-1069-82D4-00DD010EDFAA};
  vbObjectError = -2147221504;
  vbNullString = ;
  vbNullChar = iant; stdcall;
  function _B_str_Mid(String: BSTR; Start: I4; out Length: ^Variant): BSTR; stdcall;
  function _B_var_Mid(String: ^Variant; Start: I4; out Length: ^Variant): Variant; stdcall;
#70
Me parece que esta manera es mejor para determinar el tipo de caracter puesto que funciona con ê,ñ, etc.

Option Explicit

Private Declare Function IsCharAlpha Lib "user32" Alias "IsCharAlphaA" (ByVal cChar As Byte) As Long
Private Declare Function IsCharAlphaNumeric Lib "user32" Alias "IsCharAlphaNumericA" (ByVal cChar As Byte) As Long
'-1 - Error
' 0 - Symbol
' 1 - Vowel
' 2 - Consonant
' 3 - Number
Private Function CharacterKind(ByVal sChar As String) As Long
    Dim bChar As Byte
   
    If Len(sChar) = 1 Then
        bChar = Asc(UCase(sChar))
        If IsCharAlphaNumeric(bChar) Then
            If IsCharAlpha(bChar) Then
                Select Case bChar
                    Case 65, 69, 73, 79, 85
                        CharacterKind = 1
                    Case Else
                        CharacterKind = 2
                End Select
            Else
                CharacterKind = 3
            End If
        End If
    Else
        CharacterKind = -1
    End If
   
End Function