Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Visual Basic
Expertise: Beginner
Aug 6, 1997

Parsing a Variable Number of Arguments

Optional parameters are a great new feature in VB4, but the ParamArray keyword is an overlooked addition to function and subroutine declarations. The ParamArray keyword allows an unspecified number of Variant parameters to be passed to a routine as an array. This subroutine uses the ParamArray keyword to parse a string into a variable number of arguments, handling text and numerics as it goes:

 
Public Sub SplitIt(ByVal S As String, _
        ByVal Delim As String, ParamArray _
        Out() As Variant)

        'Dim xIndex As Integer, xPos As 
        'Integer, xNext As String

        'For xIndex = LBound(Out) To 
                'UBound(Out)
                xPos = InStr(S, Delim)
                If xPos = 0 Then
                        xNext = S
                        S = ""
                Else
                        xNext = Left$(S, xPos - 1)
                        S = Right$(S, Len(S) - xPos _
                                + 1 - Len(Delim))
                End If
                Select Case VarType(Out(xIndex))
                        Case vbInteger To vbCurrency
                                Out(xIndex) = Val(xNext)
                        Case vbString
                                Out(xIndex) = xNext
                End Select
        Next

End Sub




Now you can use SplitIt to split any text string into any variables at each delimiter. For example:

 
Dim X As String, Y As Double, Z As Integer

SplitIt "A,5.5,6", ",",X,Y,Z

returns:

X="A", Y=5.5, Z=6,

While:

SplitIt "AxxxBxxxC", "xxx", , X

returns:

X="B"

Andy Brundell
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date