Ich bin nicht ganz sicher, ob das Problem wirklich in Hollywood liegt oder nicht vielleicht in deiner Denke. Hast du das gleiche mal unter AmigaOS/MorphOS ausprobiert?
Ziel ist es doch, eine Kommandozeile der Art
Quake3 connect 127.0.0.1 password geheim
auszuführen, wobei Quake3 das Kommando und connect und password Parameter sind.
Wenn Quake3 jetzt eine Leerzeichen im Namen oder im Pfad hatte, also
Quake 3 connect 127.0.0.1 password geheim
dann würde die Shell (egal ob Windows oder AmigaOS) Quake als Kommando interpretieren und die 3 als ersten Parameter. Alles bis zum ersten Leerzeichen ist das Kommando.
Um das ganze zu umgehen, muß man das Kommando in Hochkomma einfassen:
"Quake 3" connect 127.0.0.1 password geheim
oder
"Work:Meine Programme/Quake 3" connect 127.0.0.1 password geheim
Jetzt zu Hollywood. Offenbar gibt es da die Funktion Run(), die einen String als Shell-Kommando ausführt.
Also genau wie oben:
Run("Quake3 connect 127.0.0.1 password geheim")
geht,
Run("Quake 3 connect 127.0.0.1 password geheim")
geht nicht und
Run("\"Quake 3\" connect 127.0.0.1 password geheim")
sollte gehen und
Run("\"Work:Meine Programme/Quake 3\" connect 127.0.0.1 password geheim")
auch.
Thomas danke für die Tips. Das ganze funktioniert im Moment so.
Run (game$.. " connect "..IP$.."; password "..PW$)
Es gibt auch noch den Befehl Execute Das ist für syncrones oder asyncrones starten.
Das ganze geht auch unter Windows solange eben keine Leerstellen in den Pfaden sind wie z.b Program files.
(Unter Win fiel mir das Problem nur auf, unter MorphOS hatte ich es nie, weil ich noch nie versucht habe Ordnern getrennte Namen zu geben)
Um den Pfad nicht immer per Hand eingeben zu müssen öffnet sich ein Requester und fragt wo die Spiel.exe ist. Die wählt man dann durch klick aus, und der Pfad wird gespeichert. Der Pfad wird immer richtig gespeichtert, nur unter Win fielen mir zum ersten mal eben auf das es mit Leerstellen im Pfad nicht funktioniert, und ein c:\Programm not found kommt.
(ist der tatsächliche Pfad aber ohne Leerstellen gibts keine Probleme)
game1$ = FilePart(game$) ; Name der exe nicht Pfad
game1$ = LeftStr(game1$,14) ;Beschränkung auf 14 Zeichen sonst überschreibt die Scuibox Icons
Mit Filepart wird in Hw der Name der exe extrahiert, und auch richtig angezeigt. Fehler in Filepart vieleicht ?
Ich habe das so verstanden, daß man genau wie bei C mit dem Zeichen \ das rechts daneben stehende Zeichen in den String übernimmt, ohne seine eigentliche Funktion auszuführen. Also im Beispiel wird durch \" das Gänsefüßchen in den String aufgenommen und zeigt nicht das Ende des Strings an.
Ich sehe da keinen Unterschied zwischen Windows und AmigaOS.
Außer daß bei Windows das \ als Pfadtrenner benutzt wird und man vermutlich jedesmal \\ schreiben muß, also
Run("\"C:\\Program Files\\Quake 3\\quake.exe\" connect 127.0.0.1 password geheim")
Gruß Thomas
Das stimmt auch Hw hat diese Zeichen auch. Allerdings wie Du siehst habe ich (bis jetzt( das selber nicht in Benutzung. Ich habe nur mal versucht ob ich " Quake3" mit run(" Quake3") starten könnte und das geht z.b nicht. Filepart liest aus dem Pfad die game.exe aus dem Pfad aus und zeigt sie "immer" richtig an . Den Pfad selber speichere ich in einer Textdatei wo er auch richtig drinnensteht.
Deswegen habe ich rumprobiert, aber der Fehler scheint schon im Pfad selber zu liegen.
Was ich halt seltsam finde ist wenn ich den richtigen exe name habe (weil er wird ja auch bei Neustart richtig aus der Textdatei gelesen) dann müsste ein run (game$) immer funktionieren, nur bei leerstellen im pfad tut es eben nicht.