[ ERLEDIGT ] - Parameter? weitergeben. Datei durchreichen

Anfängerfragen zum Programmieren mit PureBasic.
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

Re: NACHFRAGE - Parameter? weitergeben. Datei durchreichen

Beitrag von ts-soft »

Code: Alles auswählen

SoundForge = RunProgram("C:\Program Files (x86)\Sony\SoundForge11\Sound Forge Pro 11.0\Forge110.exe", dateiname.s, "")
Ist natürlich verkehrt! In #DQUOTE einschliessen, alles was Leerzeichen im Namen enthält, das gilt
auch für die Exe und Ihren Pfad!

Siehe mein Beispiel.

Code: Alles auswählen

SoundForge = RunProgram(#DQUOTE$ + "C:\Program Files (x86)\Sony\SoundForge11\Sound Forge Pro 11.0\Forge110.exe" + #DQUOTE$, dateiname.s, "")
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
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: NACHFRAGE - Parameter? weitergeben. Datei durchreichen

Beitrag von c4s »

@ts-soft
Nein, das stimmt so nicht.


Zzgl. Kiffis Bemerkung: Wenn du "EnableExplicit" (ohne Anführungsstriche) an den Anfang deines Quellcodes schreibst, wäre dieser Fehler (vermutlich) nicht aufgetreten. (@Team: Baut das endlich mal standardmäßig ein!)
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
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

Re: NACHFRAGE - Parameter? weitergeben. Datei durchreichen

Beitrag von ts-soft »

c4s hat geschrieben:@ts-soft
Nein, das stimmt so nicht.
Wie? Keine Tüdelchen beim ersten Parameter erforderlich? In der Hilfe steht da nichts von,
aber bei Parametern steht ja auch nichts von Tüdelchen.

Ich gehe danach, was z.B. die WinAPI sagt: Lange Pfadnamen sind in Anführungsstriche zu setzen.
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
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: NACHFRAGE - Parameter? weitergeben. Datei durchreichen

Beitrag von GPI »

Den Programmnamen muss man nicht mit " umschließen, weil dort nur der ein Dateiname+Pfad stehen kann. Dementsprechend ist ein Leerzeichen hier absolut kein Problem.

Bei Parametern ist das was anderes. Hier können mehrere Parameter stehen, die durch Leerzeichen getrennt sind. Das ganze Problem hat man schon bei sämtlichen DosBox/CLI etc. bei jeden Betriebsystem.

z.b.:

Code: Alles auswählen

Dir *.* /b /S
Problem gibt es mit Leerzeichen in Dateinamen. Der große Gag ist, das diese früher schlicht nicht gingen. Deshalb hat man früher gerne statt Leerzeichen einen Unterstrich verwendet.
Also hat man das ganze mit " eingeschlossen.
z.b.:

Code: Alles auswählen

dir "c:\program files\*.*" /b /s
jetzt ist es eindeutig.

Ab und zu hat es Vorteile die Entwicklung von C64 über Atari ST von Dos nach Windows mitgemacht zu haben :)
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: NACHFRAGE - Parameter? weitergeben. Datei durchreichen

Beitrag von udg »

Code: Alles auswählen

SoundForge = RunProgram("C:\Program Files (x86)\Sony\SoundForge11\Sound Forge Pro 11.0\Forge110.exe", dateiname.s, "")

Code: Alles auswählen

SoundForge = RunProgram(#DQUOTE$ + "C:\Program Files (x86)\Sony\SoundForge11\Sound Forge Pro 11.0\Forge110.exe" + #DQUOTE$, dateiname.s, "")
hatte ich drin mit Ergebnis: Fehler siehe Screenshot


Also bleibt mir nur, das leerzeichen rauszunehmen?
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!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: NACHFRAGE - Parameter? weitergeben. Datei durchreichen

Beitrag von udg »

Kiffi hat geschrieben:wo kommt dateiname.s her?

Grüße ... Peter

ups, Fehler aber funktioniert trotzdem.

Datei.s steht für meine Dateiendung: wav
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!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: NACHFRAGE - Parameter? weitergeben. Datei durchreichen

Beitrag von NicTheQuick »

Du musst '#DQUOTE + dateiname + #DQUOTE' als Parameter nutzen.
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: NACHFRAGE - Parameter? weitergeben. Datei durchreichen

Beitrag von udg »

NicTheQuick hat geschrieben: '#DQUOTE + dateiname + #DQUOTE' als Parameter nutzen.
wenn ich #DQUOTE einbinde bekomme ich : Fehler Konstante nicht gefunden.

Es geht nur: #DQUOTE$

... aber weiter komme ich trotzdem nicht.
Ich benenn den Ordner wieder um, ohne Leerzeichen und dann funktioniert es ja.

Gruß
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!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: NACHFRAGE - Parameter? weitergeben. Datei durchreichen

Beitrag von NicTheQuick »

Entschuldige, natürlich #DQUOTE$. Aber es muss gehen. Wenn das nicht geht, machst du wo anders etwas falsch. Die Lösung ist jedenfalls nicht, bei sämtlichen Dateien und Ordnern die Leerzeichen zu entfernen.
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: NACHFRAGE - Parameter? weitergeben. Datei durchreichen

Beitrag von udg »

Habs endlich hinbekommen, es geht sogar mit Ordnern die mehrere Leerzeichen haben :)

Danke NicTheQuick.
dein Code Snip : '#DQUOTE + dateiname + #DQUOTE'
geändert in: #DQUOTE$ + Datei.s + #DQUOTE$


Buttoncode:

Code: Alles auswählen

;CALL SOUNDFORGE           
        Case #Soundforge
          Datei.s = ProgramParameter()
          SoundForge = RunProgram("C:\Program Files (x86)\Sony\SoundForge11\Sound Forge Pro 11.0\Forge110.exe", #DQUOTE$ + Datei.s + #DQUOTE$,  "")
         End
Jetzt ist das Tool endlich 100%ig.

Danke Euch allen.
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!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten