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

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


Tip of the Day
Language: Visual Basic
Expertise: Intermediate
Feb 24, 2000

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


Functions Parse Command Lines

Handling multiple command-line arguments has always been ugly in VB, especially when some of the arguments are quoted because they contain characters such as spaces. For example, if you want to write a program that takes as an argument a filename, you must quote the filename to ensure a space inside it doesn't confuse your application. Unfortunately, there's no built-in functionality for handling this mess. Here are two functions—GetParam and GetParamCount—that I use all the time. Each can handle a mix of quoted and unquoted parameters:
 
Public Function GetParam(ByVal Count As Integer) As String
	Dim i As Long
	Dim j As Integer
	Dim c As String
	Dim bInside As Boolean
	Dim bQuoted As Boolean
	j = 1
	bInside = False
	bQuoted = False
	GetParam = ""
	For i = 1 To Len(Command)
		c = Mid$(Command, i, 1)
		If bInside And bQuoted Then
			If c = """" Then
				j = j + 1
				bInside = False
				bQuoted = False
			End If
		ElseIf bInside And Not bQuoted Then
			If c = " " Then
				j = j + 1
				bInside = False
				bQuoted = False
			End If
		Else
			If c = """" Then
				If j > Count Then Exit Function
				bInside = True
				bQuoted = True
			ElseIf c <> " " Then
				If j > Count Then Exit Function
				bInside = True
				bQuoted = False
			End If
		End If

		If bInside And j = Count And c <> """" _
			Then GetParam = GetParam & c
	Next i
End Function

Public Function GetParamCount() As Integer
	Dim i As Long
	Dim c As String
	Dim bInside As Boolean
	Dim bQuoted As Boolean
	GetParamCount = 0
	bInside = False
	bQuoted = False
	For i = 1 To Len(Command)
		c = Mid$(Command, i, 1)
		If bInside And bQuoted Then
			If c = """" Then
				GetParamCount = GetParamCount + 1
				bInside = False
				bQuoted = False
			End If
		ElseIf bInside And Not bQuoted Then
			If c = " " Then
				GetParamCount = GetParamCount + 1
				bInside = False
				bQuoted = False
			End If
		Else
			If c = """" Then
				bInside = True
				bQuoted = True
			ElseIf c <> " " Then
				bInside = True
				bQuoted = False
			End If
		End If
	Next i

	If bInside Then GetParamCount = GetParamCount + 1
End Function
Konstantin Komissarchik
 
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