Запускаеться таким образом:
- Код: Выделить всё
cmdparse Command()
В конце модуля нужно отредактировать все CASE по своему вкусу
Если кто хочет помочь по оптимизации и модернизации - буду очень рад
Модератор: Brickgroup
cmdparse Command()
''' <summary>Command-line parser</summary>
''' <remarks>Accepts command-line formatted like <c>-a 1 -b xyz -gh file1 file2</c>.</remarks>
''' <example><code>
''' Dim args As CmdLineArgs = new CmdLineArgs (_args)
''' For Each name As String In args.AllKeys
''' Console.WriteLine(name + "=" + args(name))
''' Next
''' For Each name As String In args.Files
''' Console.WriteLine("file: " + name)
''' Next
''' </code></example>
Public Class CmdLineArgs
Inherits NameValueCollection
Public Files As ArrayList = New ArrayList
Public Sub New(ByVal args() As String)
MyBase.New(CaseInsensitiveHashCodeProvider.Default, Comparer.Default)
Dim file As Boolean = False
Dim lastopt As Char = ControlChars.NullChar
For Each s As String In args
If Not file AndAlso s.Chars(0) = "-"c Then 'an option
Dim options() As Char = s.ToCharArray(1, s.Length - 1)
For Each c As Char In options
Me(c) = ""
lastopt = c
Next
ElseIf lastopt <> ControlChars.NullChar Then 'a parameter
Me(lastopt) = s
lastopt = ControlChars.NullChar
Else 'a file
file = True 'everything left is files
Files.Add(s)
End If
Next
End Sub
''' <summary>Parameter by its letter</summary>
Default Public Overloads Property Item(ByVal Index As Char) As String
Get
Return MyBase.Item(Index.ToString())
End Get
Set(ByVal Value As String)
MyBase.Item(Index.ToString()) = Value
End Set
End Property
''' <summary>Removes parameter by its letter</summary>
Public Overloads Sub Remove(ByVal index As Char)
MyBase.Remove(index.ToString())
End Sub
End Class
:) понятно спасибо за пояснение, бо я Script Control никогда не использовалGSerg писал(а):Script Control делает то, что ты пытаешься сделать своим парсером.
BV писал(а):Может мне ещё свой выложить? Так сказать - для полноты картины?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6