[ ERLEDIGT ] ProgramParameter übergeben?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

[ ERLEDIGT ] ProgramParameter übergeben?

Beitrag von udg »

Hallo,

ich sitze nun schon wieder eine gefühlte Ewigkeit an der Übergabe von Parametern.

In der Batch lauten diese wie folgt:

Code: Alles auswählen

programm.exe p d output.blub
ich benötige:

Code: Alles auswählen

RunProgram("programm.exe ", "p d output.blub", "")
oder?

Code: Alles auswählen

RunProgram("programm.exe ", "p d " + "output.blub", "")
oder?

Code: Alles auswählen

RunProgram("programm.exe ", "p " + "d " + "output.blub", "")
nichts will funktionieren das Programm nimmt keine Parameter . Was mache ich denn falsch?


Grüße
Zuletzt geändert von udg am 05.06.2020 14:34, insgesamt 1-mal geändert.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: ProgramParameter übergeben?

Beitrag von Kiffi »

die Pfade zu programm.exe und output.blub stimmen?

Sind Leerzeichen in den Pfaden?

Grüße ... Peter
Hygge
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: ProgramParameter übergeben?

Beitrag von udg »

die Pfade stimmen. Wenn ich nur die Exe aufrufe startet es diese.
Ja der Zielpfad besitzt leerzeichen.
Aber wie gesagt, rufe ich nur die Exe auf, wird diese auch gestartet
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: ProgramParameter übergeben?

Beitrag von Kiffi »

udg hat geschrieben:Ja der Zielpfad besitzt leerzeichen.
dann solltest Du diesen mit Anführungszeichen (Chr(34)) klammern.

so in etwa:

Code: Alles auswählen

Programm.s = Chr(34) + "kompletter/pfad/zu/programm.exe" + Chr(34)
Output.s   = Chr(34) + "kompletter/pfad/zu/output.blub" + Chr(34)

RunProgram(Programm, "p d " + Output, "")
Hygge
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: ProgramParameter übergeben?

Beitrag von udg »

leider immer noch nicht. (habe zum testen alle Leerzeichen aus dem Zielpfad entfernt) ---> nix

folgendes habe ich jetzt direkt in die Prozedur geschrieben:

Code: Alles auswählen

  Programm.s = Chr(34) + GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\RNC.EXE " + Chr(34)
  Output.s   = Chr(34) + GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\Game.rnc" + Chr(34)
  
  RunProgram(Programm, "p d " + Output, "")
mit Chr(34) + + Chr(34) und ohne ---> keine gewünschte Funktion.

eigentlich hatte ich die Pfade schon als Global festgelegt aber geht auch noch nicht.
so:

Code: Alles auswählen

Global RNCPath.s = GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\RNC.EXE "
Global GameRnc.s = GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\Game.rnc"
dann sollte normal auch das funktionieren:

Code: Alles auswählen

  Programm.s = RNCPath
  Output.s   = GameRnc
  
  RunProgram(Programm, "p d " + Output, "")
auch nix.

nach der Programm Exe muss ebenfalls ein Leerzeichen sein vor den beiden Optionen. Klammer ich die Optionen aus. Ruft es das programm.exe auf und sagt mir nun, dass ich doch bitte die beiden Schalter "p d" anhängen soll + File.blub

Irgendwo stimmt was nicht
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
HeX0R
Beiträge: 2960
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: ProgramParameter übergeben?

Beitrag von HeX0R »

nach der Programm Exe muss ebenfalls ein Leerzeichen sein vor den beiden Optionen
Natürlich muss das, das muss immer und überall!
Sprich: RunProgram fügt das bereits selbständig ein!

Versuch's mal so:

Code: Alles auswählen

Programm.s = Chr(34) + GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\RNC.EXE" + Chr(34)
RunProgram(Programm, "p d Game.rnc", GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\)
Benutzeravatar
grapy
Beiträge: 108
Registriert: 09.09.2004 09:05

Re: ProgramParameter übergeben?

Beitrag von grapy »

Zitat:
nach der Programm Exe muss ebenfalls ein Leerzeichen sein vor den beiden Optionen

Natürlich muss das, das muss immer und überall!
Sprich: RunProgram fügt das bereits selbständig ein!
Diese Aussage finde ich sehr verwirrend. :roll:

RunProgram fügt hier gar nirgends Leerzeichen ein und braucht diese auch gar nicht !!!
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: ProgramParameter übergeben?

Beitrag von udg »

HeX0R hat geschrieben:
nach der Programm Exe muss ebenfalls ein Leerzeichen sein vor den beiden Optionen
Natürlich muss das, das muss immer und überall!
Sprich: RunProgram fügt das bereits selbständig ein!

Versuch's mal so:

Code: Alles auswählen

Programm.s = Chr(34) + GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\RNC.EXE" + Chr(34)
RunProgram(Programm, "p d Game.rnc", GetUserDirectory(#PB_Directory_ProgramData) + "udg\Playstation1Exe-RNCPacker\")
Danke geht.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
HeX0R
Beiträge: 2960
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: ProgramParameter übergeben?

Beitrag von HeX0R »

grapy hat geschrieben: Diese Aussage finde ich sehr verwirrend. :roll:
RunProgram fügt hier gar nirgends Leerzeichen ein und braucht diese auch gar nicht !!!
Abstraktes Denken ist nicht so Deins?
Aber klar, richtig war die Aussage auch nicht :mrgreen:
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: [ ERLEDIGT ] ProgramParameter übergeben?

Beitrag von Sicro »

Meines Wissens muss der Programmpfad nicht in Anführungszeichen gesetzt werden, wenn Leerzeichen im Pfad sind. Solch ein Pfad ist nur problematisch als Parameter, weil der Pfad dann zerstückelt vom Programm eingelesen wird:

Parameter: p d C:\Users\Paul B.\Datei.txt
wird an das Programm so übergeben:
Parameter1: p
Parameter2: d
Parameter3: C:\Users\Paul
Parameter4: B.\Datei.txt
Fehler: Pfad unvollständig

Übergibst du den Pfad in Anführungszeichen:
Parameter: p d "C:\Users\Paul B.\Datei.txt"
wird an das Programm so übergeben:
Parameter1: p
Parameter2: d
Parameter3: C:\Users\Paul B.\Datei.txt
Alles ok, weil nun klar ist, dass das Leerzeichen kein Parameter-Trenner ist.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Antworten