Kommandozeilen-Parameter

Für allgemeine Fragen zur Programmierung mit PureBasic.
Tw4!n
Beiträge: 8
Registriert: 07.03.2006 21:19

Kommandozeilen-Parameter

Beitrag von Tw4!n »

Hi!
Könntet ihr mir sagen wie ich solche Kommandozeilen verwende?
Also, wen ich zB mit cmd, oder ein Konsolenprogramm von mir, ein von mir geschriebenes Programm aufrufe. zB:

RunProgram("test.exe","/a","") oder über cmd: start test.exe /a

wie mache ich das, dass mein Programm das aufgerufen wurde das merkt und die jeweilige Option dafür ausführt?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

lies mal in der help nach.
in der beschreibung von RunProgram() findest du auch einen verweis auf ProgramParameter()
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Zur Auswertung gibts verschiedene Möglichkeiten, hier mal eine, für beliebige
Parameter, ohne Verwendung des Index:

Code: Alles auswählen

Repeat
  Select LCase(ProgramParameter())
    Case "/a"
      ; code für /a
    Case "/b"
      ; code für /b
    Case ""
      quit = 1
  EndSelect
Until quit = 1
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Hinweis: Sich zur Ermittlung des letzten Parameters auf die Rückgabe eines leeren Strings zu verlassen, ist keine gute Praxis, da der Befehl auch einen leeren String zurückgibt, wenn in "" ein leerer String in der Kommandozeile übergeben wurde. Der bessere Weg zur Ermittlung aller Parameter ist es, die Anzahl mittels CountProgramParameters() zu ermitteln und dann ProgramParameter() sooft wie nötig aufzurufen.
... das ist meistens wirklich besser und auch nicht komplizierter :D
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Hab noch keinen Trottel gefunden, der so falsch die Parameter übergibt, aber
ansonsten haste wohl Recht :mrgreen:
Gab aber noch nie nen Fehler!

Korrigierter Code:

Code: Alles auswählen

For I = 1 To CountProgramParameters()
  Select LCase(ProgramParameter())
    Case "/a"
      ; code für /a
    Case "/b"
      ; code für /b
    Default
      Debug "unbekannter Parameter"
  EndSelect
Next
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Tw4!n
Beiträge: 8
Registriert: 07.03.2006 21:19

Beitrag von Tw4!n »

Danke!
Habe mich jetzt ein bisschen mit dem beschäftigt, und stehe schon wieder vor dem nächsten wo ich nicht weiterkomme :|
Und zwar möchte ich, dass man nach einem Parameter einen string, oder eine Zeichenkette anhängen kann, die das Programm nachher ausgibt, jedoch bin ich entweder zu dumm richtig zu suchen, oder einfach nur zu müde...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wenn Du müde bist, geh schlafen :D

Code: Alles auswählen

Para = CountProgramParameters()

While Para
  Select LCase(ProgramParameter())
    Case "/a"
      text.s = ProgramParameter()
      Para - 1
    Case "/b"
      ; code für /b 
   EndSelect
   Para - 1 
Wend
Debug text
Zuletzt geändert von ts-soft am 10.11.2006 01:07, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wenn dein string leerzeichen enthält, würde er als einzelne parameter gelesen werden,
also musst du ihn in anführungszeichen übergeben.

beispiel für das hinzufügen von anführungszeichen zu einem string:

Code: Alles auswählen

Argument2$ = Chr(34) + "Dieser Text steht in Anführungszeichen." + Chr(34)

Debug Argument2$
[edit]
ha, ts, du warst zwar schneller, aber du hast das space-problem vergessen.
ätsch... :mrgreen:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Tw4!n
Beiträge: 8
Registriert: 07.03.2006 21:19

Beitrag von Tw4!n »

Danke euch zwei, funktioniert primer.
Antworten