Hi Folks,

Split function is not available natively in VB5. MSDN has provided a replacement for VB5.
Here is the code.
VB Code:
  1. Public Function Split(ByVal sIn As String, Optional sDelim As _
  2.             String, Optional nLimit As Long = -1, Optional bCompare As _
  3.              VbCompareMethod = vbBinaryCompare) As Variant
  4.           Dim sRead As String, sOut() As String, nC As Integer
  5.           If sDelim = "" Then
  6.               Split = sIn
  7.           End If
  8.           sRead = ReadUntil(sIn, sDelim, bCompare)
  9.           Do
  10.               ReDim Preserve sOut(nC)
  11.               sOut(nC) = sRead
  12.               nC = nC + 1
  13.               If nLimit <> -1 And nC >= nLimit Then Exit Do
  14.               sRead = ReadUntil(sIn, sDelim)
  15.           Loop While sRead <> ""
  16.           ReDim Preserve sOut(nC)
  17.           sOut(nC) = sIn
  18.           Split = sOut
  19.       End Function
  20.  
  21. Public Function ReadUntil(ByRef sIn As String, _
  22.             sDelim As String, Optional bCompare As VbCompareMethod _
  23.           = vbBinaryCompare) As String
  24.           Dim nPos As String
  25.           nPos = InStr(1, sIn, sDelim, bCompare)
  26.           If nPos > 0 Then
  27.               ReadUntil = Left(sIn, nPos - 1)
  28.               sIn = Mid(sIn, nPos + Len(sDelim))
  29.           End If
  30.       End Function

This code doesn't work as smoothly as the split function in vb6.
Notice this array "Open ~ Close ~~ Send". This is not getting correctly split in this function.S
So I have made a slight change to the function.

Here is my changed function. Please review and comments.


VB Code:
  1. Public Function Split(ByVal sIn As String, Optional sDelim As _
  2.             String, Optional nLimit As Long = -1, Optional bCompare As _
  3.              VbCompareMethod = vbBinaryCompare) As Variant
  4.           Dim sRead As String, sOut() As String, nC As Integer
  5.           If sDelim = "" Then
  6.               Split = sIn
  7.           End If
  8.           sRead = ReadUntil(sIn, sDelim, bCompare)
  9.           Do
  10.               ReDim Preserve sOut(nC)
  11.               sOut(nC) = sRead
  12.               nC = nC + 1
  13.               If nLimit <> -1 And nC >= nLimit Then Exit Do
  14.               sRead = ReadUntil(sIn, sDelim)
  15.           Loop While Len(sIn) <> 0 ''My Change Over here
  16.           ReDim Preserve sOut(nC)
  17.           sOut(nC) = sIn
  18.           Split = sOut
  19.       End Function

Cheers,
Abhijit