Rubrik: Variablen/Strings · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 30.01.04 |
Command$ Parser Universeller Parser zum Auslesen der Übergabeparameter beim Start der eigenen EXE-Datei. | ||
Autor: Roland Wutzke | Bewertung: | Views: 24.213 |
www.vb-power.net | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Im Forum taucht immer wieder die Frage auf: "Wie werden Parameter an meine Applikation übergeben?"
Die Antwort: "Aus dem Command String!"
Dabei ist zu beachten, dass der String ggf. in Anführungszeichen kommt.
Soweit so gut, doch wie wertet man nun Command$ aus?
Dazu folgende Überlegung:
- Wir brauchen eine universelle Funktion.
- Die Anzahl der Parameter kann variieren.
- Dem Parameter kann ein Separator vorangestellt sein, z.B.: als Zeichen ein / oder #.
- Die Rückgabe der Parameter erfolgt über ein Array, in dem die einzelnen Elemente bereits normalisiert sein müssen.
Die cmdParser-Funktion erwartet als Übergabeparameter ein Array, in dem die einzelnen Elemente zurückgegeben werden. Als optionaler Parameter wird der Separator erwartet. Default ist ein Blank (Leerzeichen). Als Rückgabewert liefert die Funktion die Anzahl der Elemente.
Fügen Sie den nachfolgenden Code in ein Modul ein:
Public Function cmdParser(ByRef ParseArray As Variant, _ Optional ByVal cmdSeparator As String = " ") As Long Dim tmpstr As String Dim tmpArray() As String Dim x1 As Long Dim x2 As Long ' Funktion initialisieren cmdParser = 0 If Command$ = "" Then Exit Function ' Command$ ermitteln und über die Split-Funktion ' in das tmpArray übertragen. Dabei wird geprüft, ' ob der Command$ in Anführungszeichen steht. Wenn ' ja, dann Anführungszeichen löschen. tmpstr = Command$ If Left(Command$, 1) = Chr(34) Then If Right$(Command$, 1) = Chr(34) Then tmpstr = Mid$(Command$, 2, Len(Command$) - 2) End If End If tmpArray = Split(tmpstr, cmdSeparator) ' ParseArray initialisieren x1 = 0 ReDim ParseArray(x1) ' Schleife über alle Einträge aus dem tmpArray For x2 = LBound(tmpArray) To UBound(tmpArray) ' ParseArray normalisieren If tmpArray(x2) <> "" Then ParseArray(x1) = Trim(tmpArray(x2)) x1 = x1 + 1 ReDim Preserve ParseArray(x1) End If Next x2 ' Letztes Redim Preserve zurücksetzen If x1 > 0 Then ReDim Preserve ParseArray(x1 - 1) End If ' Rückgabewert setzen cmdParser = x1 End Function
Aufrufbeispiel:
Platzieren Sie eine Listbox auf die Form1 und fügen Sie den nachfolgenden Code in das Codefenster der Form.
Geben Sie die Command$-Parameter in den Projekteigenschaften in der Lasche "Erstellen/Befehlszeilenargumente" ein. In diesem Beispiel: "/Param1 /Param2 /Param3". Oder erzeugen Sie eine EXE und geben Sie die Parameter beim Aufruf mit an.
Private Sub Form_Load() Dim x As Long Dim cmdParseList() As String If cmdParser(cmdParseList, "/") > 0 Then For x = LBound(cmdParseList) To UBound(cmdParseList) List1.AddItem cmdParseList(x) Next x End If End Sub