Hola!
Hace tiempo tube la necesidad de crear una funcion(cuando aprendia pseudocodigo) para trabajar con datos de registros que sigen un formato, asi que asi nacio esta funcion Frag, por lo cual en ese momento no conocia a split, pero tenia la necesidad de algo como eso...
Ahora acabo de encontrar el documento donde guarde detalles de la funcion el cual habia hecho para compartir con compañeros de estudio, y ahora lo posteo por si le sea util a alguien mas...
La funcion split sirve para lo mismo, pero a veces no es necesario crear un array para acceder a un dado en una posicion en concreto; y mas aun, si es que tienes un documento con muchos registros, entonces es necesario de Frag, que apunta hacia algo en concreto...
A mi me es util en programas que usan sockets para enviar y recibir datos, guardar configuraciones del programa, para registros de usuarios, para archivos de configs, en fin...
usos:
(http://www.tienspiura.com/jackl007/FuncionFrag-test.PNG)
aqui dejo el enlace del documento con su respectiva pequeña ayuda:http://www.tienspiura.com/jackl007/FuncionFrag_vb.pdf
el codigo de la funcion es este:
Public Function Frag(ByVal Cad As String, dLim As String, X As Integer) As String
Dim i, a As Integer
Dim Encontrado As Boolean
For a = 1 To X
i = InStr(1, Cad, dLim)
If i = 0 Then
If Encontrado = False Then
Frag = Cad
Encontrado = True
Else
Frag = "NotFound"
End If
Else
Frag = Mid(Cad, 1, i - 1)
Cad = Mid(Cad, i + Len(dLim))
End If
Next a
End Function
Hay veces que no es necesario usar frag para cosas simples donde con split lo logras, pero si necesitas datos mas trabajados y rapido, frag te simplifica bastante...
No hay necesidad de usar un array, con split podes simplemente hacer asi
sMyVar = Split(MyText,MyDelim)(Index)
Aca dejo otra mas, funciona practicamente igual que split.
'---------------------------------------------------------------------------------------
' Procedure : SplitAlter
' DateTime : 16/09/2008 22:58
' Author : Cobein
' Mail : cobein27@yahoo.com
' Purpose : Complete Split Replacement
'---------------------------------------------------------------------------------------
Private Function SplitAlter(ByVal Expression As String, Optional ByVal Delimiter As String, Optional ByVal Limit As Long = -1) As String()
Dim lLastPos As Long
Dim lIncrement As Long
Dim lExpLen As Long
Dim lDelimLen As Long
Dim lUbound As Long
Dim svTemp() As String
lExpLen = Len(Expression)
If Delimiter = vbNullString Then Delimiter = " "
lDelimLen = Len(Delimiter)
If Limit = 0 Then GoTo QuitHere
If lExpLen = 0 Then GoTo QuitHere
If InStr(1, Expression, Delimiter, vbBinaryCompare) = 0 Then GoTo QuitHere
ReDim svTemp(0)
lLastPos = 1
lIncrement = 1
Do
If lUbound + 1 = Limit Then
svTemp(lUbound) = Mid$(Expression, lLastPos)
Exit Do
End If
lIncrement = InStr(lIncrement, Expression, Delimiter, vbBinaryCompare)
If lIncrement = 0 Then
If Not lLastPos = lExpLen Then
svTemp(lUbound) = Mid$(Expression, lLastPos)
End If
Exit Do
End If
svTemp(lUbound) = Mid$(Expression, lLastPos, lIncrement - lLastPos)
lUbound = lUbound + 1
ReDim Preserve svTemp(lUbound)
lLastPos = lIncrement + lDelimLen
lIncrement = lLastPos
Loop
ReDim Preserve svTemp(lUbound)
SplitAlter = svTemp
Exit Function
QuitHere:
ReDim SplitAlter(-1 To -1)
End Function