Microsoft KB Archive/188007

= How To Simulate Visual Basic 6.0 String Functions in VB5 =

Article ID: 188007

Article Last Modified on 7/13/2004

-

APPLIES TO


 * Microsoft Visual Basic 5.0 Learning Edition
 * Microsoft Visual Basic 6.0 Learning Edition
 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition
 * Microsoft Visual Basic 4.0 Standard Edition
 * Microsoft Visual Basic 4.0 Professional Edition
 * Microsoft Visual Basic 4.0 Enterprise Edition

-



This article was previously published under Q188007



SUMMARY
Visual Basic version 6.0 introduces a number of new string functions to simplify string manipulation in your code. This article describes how the same functionality can be used with earlier versions of Visual Basic.



MORE INFORMATION
The following additional string functions are present in Visual Basic 6.0:

Function     Description --- Join         Used to join arrays elements.

Split        Split a string into a variant array.

InStrRev     Similar to InStr but searches from end of string.

Replace      To find a particular string and replace it.

Reverse      To reverse a string.

If these functions are coded and added in a module, all the above functions can be used in the project as if they are intrinsic functions.

 Start a new project. Form1 is created by default.  Add a new module to the project and add the following code to the module: Option Explicit

Public Function Join(source As String, Optional _           sDelim As String = " ") As String Dim sOut As String, iC As Integer On Error GoTo errh: For iC = LBound(source) To UBound(source) - 1 sOut = sOut & source(iC) & sDelim Next sOut = sOut & source(iC) Join = sOut Exit Function errh: Err.Raise Err.Number End Function

Public Function Split(ByVal sIn As String, Optional sDelim As _           String, Optional nLimit As Long = -1, Optional bCompare As _             VbCompareMethod = vbBinaryCompare) As Variant Dim sRead As String, sOut As String, nC As Integer If sDelim = "" Then Split = sIn End If         sRead = ReadUntil(sIn, sDelim, bCompare) Do             ReDim Preserve sOut(nC) sOut(nC) = sRead nC = nC + 1 If nLimit <> -1 And nC >= nLimit Then Exit Do             sRead = ReadUntil(sIn, sDelim) Loop While sRead <> "" ReDim Preserve sOut(nC) sOut(nC) = sIn Split = sOut End Function

Public Function ReadUntil(ByRef sIn As String, _           sDelim As String, Optional bCompare As VbCompareMethod _          = vbBinaryCompare) As String Dim nPos As String nPos = InStr(1, sIn, sDelim, bCompare) If nPos > 0 Then ReadUntil = Left(sIn, nPos - 1) sIn = Mid(sIn, nPos + Len(sDelim)) End If     End Function

Public Function StrReverse(ByVal sIn As String) As String Dim nC As Integer, sOut As String For nC = Len(sIn) To 1 Step -1 sOut = sOut & Mid(sIn, nC, 1) Next StrReverse = sOut End Function

Public Function InStrRev(ByVal sIn As String, sFind As String, _      Optional nStart As Long = 1, Optional bCompare As _            VbCompareMethod = vbBinaryCompare) As Long Dim nPos As Long sIn = StrReverse(sIn) sFind = StrReverse(sFind) nPos = InStr(nStart, sIn, sFind, bCompare) If nPos = 0 Then InStrRev = 0 Else InStrRev = Len(sIn) - nPos - Len(sFind) + 2 End If     End Function

Public Function Replace(sIn As String, sFind As String, _           sReplace As String, Optional nStart As Long = 1, _            Optional nCount As Long = -1, Optional bCompare As _            VbCompareMethod = vbBinaryCompare) As String

Dim nC As Long, nPos As Integer, sOut As String sOut = sIn nPos = InStr(nStart, sOut, sFind, bCompare) If nPos = 0 Then GoTo EndFn: Do             nC = nC + 1 sOut = Left(sOut, nPos - 1) & sReplace & _ Mid(sOut, nPos + Len(sFind)) If nCount <> -1 And nC >= nCount Then Exit Do             nPos = InStr(nStart, sOut, sFind, bCompare) Loop While nPos > 0 EndFn: Replace = sOut End Function

  Add two CommandButtons to Form1. Add the following code to the General Declaration section of Form1: Option Explicit

Dim MyArray(2) As String, MyStr As String, MyVar As Variant

Private Sub Command1_Click MyArray(0) = "item1" MyArray(1) = "item2" MyArray(2) = "item3" MyStr = Join(MyArray, ";") Debug.Print MyStr End Sub

Private Sub Command2_Click Dim i As Integer MyVar = Split(MyStr, ";") For i = LBound(MyVar) To UBound(MyVar) Debug.Print MyVar(i) Next End Sub

Private Sub Form_Load Command1.Caption = "Join" Command2.Caption = "Split" End Sub

 Press the F5 key to run the project. Click on Join, and note in the debug window that the array elements are joined. Click on Split to split a string into a variant array. Pause the project by pressing the CTRL+BREAK key combination or clicking the Pause button on the toolbar. Test the remaining functions by typing the following lines in the immediate window and verifying the results:

?instrrev("//drive/dir","/")

8

?strreverse("input string")

gnirts tupni

?replace("input string"," ", "-",4,1)

input-string

NOTE: The errors generated may not exactly coincide with those generated by the Visual Basic 6.0 intrinsic string functions.

Additional query words: kbDSupport kbDSD beta99 kbVBp kbVBp400 kbVBp500 kbVBp600 kbVBA

Keywords: kbhowto KB188007

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.