Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0538: Die Parameter-Variable Command richtig nutzen

 von 

Beschreibung 

Dieser Tipp zeigt wie man die übergebenen Parameter an die eigene EXE aufnimmt, und in einzelne Teile zerlegt

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,24 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei command.vbp  -------------
'-------- Anfang Formular "Form1" alias command.frm  --------
' Steuerelement: Listen-Steuerelement "List1"
' Steuerelement: Schaltfläche "Command1"
'
'Autor: "SAP*"  peter.k.sauer@web.de

Option Explicit
 
Private myVariabs() As String
 
Private Sub Command1_Click()
      ' Beim Testen kann der Command$ recht einfach gesetzt werden
      ' Projekt > Eigenschaften > Erstellen > Befehlszeilenargumente
      
 
   Dim CmdString As String
   Dim workTb() As String
   Dim Ele() As String
   Dim myVariabs() As String
   Dim i As Integer
   
      ' Übergeben der Command$ an eine eigene Variable
      CmdString = Command$
     
      ' Nicht benötigte Spaces entfernen
      Do While InStr(CmdString, Space(2)) > 0
         CmdString = Replace(CmdString, Space(2), Space(1))
      Loop
      
      ' Generell Gross- oder Kleinschreibung
      ' durch UCase hier also nur Grossbuchstaben
      CmdString = UCase(CmdString)
      
      ' Aufteilen in WorkArray temporär
      workTb = Split(CmdString, Space(1))
      
      ' Einlesen in Public Variablenliste
      ' Variablenarray vergrößern
      ReDim myVariabs(LBound(workTb) To UBound(workTb), 0 To 1)
      For i = LBound(workTb) To UBound(workTb)
         ' aufteilen in Variablenname (+ Wert, falls angegeben)
         Ele = Split(workTb(i), "=")
         myVariabs(i, 0) = Ele(0)
         If UBound(Ele) = 1 Then
            myVariabs(i, 1) = Ele(1)
         End If
      Next
      
      ' In List1 alle Command$ ausgeben
      For i = LBound(myVariabs) To UBound(myVariabs)
         List1.AddItem myVariabs(i, 0) & Space(3) & myVariabs(i, 1)
      Next
      
End Sub

'--------- Ende Formular "Form1" alias command.frm  ---------
'-------------- Ende Projektdatei command.vbp  --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 4 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von jroth-haj am 28.09.2005 um 16:01

Folgendes löst einen Error aus, wenn ein Parameter ohne Wert übergeben wird (Bsp: /ini="c:\test.ini" /nogui):
For I = LBound(Kommands()) To UBound(Kommands())
tmpArray() = Split(Kommands(I), "=")
varName(I) = tmpArray(0)
varWert(I) = tmpArray(1)
Next I

Hier der ergänzte Code:
For I = LBound(Kommands()) To UBound(Kommands())
tmpArray() = Split(Kommands(I), "=")
varName(I) = tmpArray(0)
If UBound(tmpArray()) = 1 Then
varWert(I) = tmpArray(1)
Else
varWert(I) = ""
End If
Next I

Kommentar von MVXA am 10.04.2004 um 18:43

Ich hab mal was programmiert das etwas besser handzuhaben ist und man von jeder Form aus aufrufen kann (sofern es in einem Modul steht).

Public Type tKommand
Namen() As String
Werte() As String
End Type

Public Function GetCommand() As tKommand
Dim Kommands() As String
Dim tmpArray() As String
Dim varName() As String
Dim varWert() As String
Dim I As Long

Kommands() = Split(Command$, Space$(1))

ReDim Preserve varWert(UBound(Kommands()))
ReDim Preserve varWert(UBound(Kommands()))
For I = LBound(Kommands()) To UBound(Kommands())
tmpArray() = Split(Kommands(I), "=")
varName(I) = tmpArray(0)
varWert(I) = tmpArray(1)
Next I
GetCommand.Namen() = varName()
GetCommand.Werte() = varWert()
End Function

Kommentar von Johannes am 22.06.2003 um 16:12

Natürlich funktioniert es wenn es compiliert wurde, man muss eben eine Verknüpfung erstellen und Parameter eingeben

Kommentar von Baby an Board am 12.11.2002 um 23:02

Sobald compiliert wird läuft es nicht.