AMIGA-RESISTANCE https://forum.amiga-resistance.info/ |
|
Leerstellenproblem https://forum.amiga-resistance.info/viewtopic.php?f=38&t=2818 |
Seite 1 von 1 |
Autor: | Murmel [ 28 Apr 2010, 23:29 ] |
Betreff des Beitrags: | Leerstellenproblem |
Hallo. Ich habe folgende Probleme und vieleicht weiss ja jemand Rat ? Ich speichere Pfade als Textdateien und lese sie wieder ein. Das klappt auch alles solange es keine Leerstellen im Pfad gibt (fiel mir erst unter Win auf). Pfade mit Leerstellen werden bei mir korrekt geladen und gespeichert. Allerdings hat z.b. result=Exists() Probleme und erkennt die Leerstelle nicht. Hat sich schon jemand mt diesem Problem auseiander gesetzt ? Danke, Grüsse, Murmel |
Autor: | Tipsi [ 29 Apr 2010, 16:55 ] |
Betreff des Beitrags: | Re: Leerstellenproblem |
Salli Murmel Hast Du schon mal versucht, nach dem ersten und vor dem letzten Hochzeichen ein \" zu setzen? Das müsste etwa so aussehen: result = Exists("\"dh0:dokument Murmel/Texte\"") Ich weiss zwar nicht, ob das wirklich geht, aber mit dem Escape Code \" setzt Du ein Hochzeichen. Und bei normalen Dateinamen mit Leerzeichen muss das ganze auch in zwei Hochzeichen eingeschlossen werden. Funktionierts? Griessli Tipsi |
Autor: | Murmel [ 04 Mai 2010, 18:52 ] |
Betreff des Beitrags: | Re: Leerstellenproblem |
Hi Tipsi. Erstmal Danke für Deinen Tip ![]() geschafft das vernünftig zusammenzusetzen. Mich wunder aber generell das so eine Leerstelle nicht wie ein normales Zeichen gehandelt wird. Grüss, Murmel |
Autor: | Tipsi [ 05 Mai 2010, 21:16 ] |
Betreff des Beitrags: | Re: Leerstellenproblem |
Salli Murmel Die Leerstellen dienen in der Dateiverwaltung als Trennzeichen zwischen Dateinamen und den Optionen. Würde man anstelle des Leerzeichens zukünftig ein Komma nehmen, würden viele ältere Programme sowie Batch-/Skriptdateien nicht mehr funktionieren. Das wäre nicht so toll, vor allem für den Amiga nicht. Griessli Tipsi |
Autor: | Murmel [ 28 Jun 2010, 20:44 ] | |
Betreff des Beitrags: | Re: Leerstellenproblem | |
Hi Tipsi (Sorry hatte zuletzt wenig Zeit) Das Problem ist halt das z.b bei Windows manchmal Leerstellen im Pfad auftauchen, und unter Win ist das anscheinend normal. Das Programm liest aber alles in einen Rutsch und kriegt die Leerstellen nicht mit. Das bedeutet eben das dann der Pfad falsch abgespeichert und eingelesen wird, und weil die Leerstellen fehlen nicht mehr gefunden wird. Also müsste man für Windows extra ne Routine schreiben das hier Leerstellen erlaubt sind. Problem bleibt auch das es z.b richtig eingelesen und gespeichert wird Pfad (MorphOS) MorphOS2.0:Games/Quake3/ Quake3 Trotzdem wird es nicht gefunden eine einfache Leerstelle reicht also dafür aus. Zu testzwecken habe ich die Quake3.exe von "Quake3" nach " Quake3" unbenannt. Sobald die Leerstelle drinnen ist kann man es nicht mehr starten Z.b Run ("\1Quake3".. "; connect "..IP$.."; password "..PW$) versucht z.b richtig " Quake3" zu starten, findet es aber nicht. Run(" Quake3") geht natürlich genauso wenig |
Autor: | Tipsi [ 29 Jun 2010, 16:20 ] |
Betreff des Beitrags: | Re: Leerstellenproblem |
Salli Murmel Bei diesem Sonnenschein im Moment sowie der FussballWM begreiffe ich, dass Du nicht oft hier bist. ![]() Leerstellen am Anfang von einem Dateinamen akzeptiert selbst Windows XP nicht. Auch in einem Pfad muss mindestens ein Zeichen vor der Leerstelle sein, sonst wird die oder alle Leerstellen vor dem Namen/Pfad automatisch gelöscht. Wenn ich mit KoKa in Windows XP eine Datei mit einer Leerstelle dazwischen abspeichere, z.B. Karten Test.rtf kann diese Datei im Clipboarddemoprogramm von Andreas geladen werden. Ich kenne mich mit MorphOS nicht aus, aber ich denke, da läuft es ähnlich. Oder kannst Du da eine Datei mit dem Namen " Test.txt" generieren (z.B. mit einer Textverarbeitung)? Oder hab ich etwas nicht verstanden? Meinst Du etwas anderes? Griessli Tipsi |
Autor: | Murmel [ 30 Jun 2010, 17:49 ] | |||||
Betreff des Beitrags: | Re: Leerstellenproblem | |||||
Hi Tipsi. Das wäre schön. Bei mir lags eher an der Arbeit und privatem Mist oo Ok danke für die info. Soweit hatte ich jetzt nicht gedacht. Mein Problem ist das bei mir unter Winxp im Pfad Leerstellen sind. Diese werden zwar auch richtig übernommen und abgespeichert, aber die exe lässt sich nicht starten Ja das geht ganz einfach mit CuibIDE. Datei " dhdklkl" im Ram gespeichert, und steht auch so da. Ich kann auch eine Leerstelle vor einem Programm lassen, und es normal starten. Deswegen meine ich das ein Run (" Quake") eigendlich auch funktionieren müsste, oder es ist ein Fehler in HW. Ich versuchs mal unter OS4.1 Nein ich denke Du verstehst es schon richtig. Wie oben geschrieben suche ich nur nach einer Lösung trotz Leerstellen im Pfad die exe zu starten. Grüsse, Murmel |
Autor: | thomas [ 30 Jun 2010, 19:05 ] |
Betreff des Beitrags: | Re: Leerstellenproblem |
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. 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 |
Autor: | Murmel [ 30 Jun 2010, 19:52 ] |
Betreff des Beitrags: | Re: Leerstellenproblem |
@Thomas Danke Erstmal für Deine Hilfe, ich gehe später noch drauf ein. Ich gebe zu ich habe an der falschen Stelle gesucht. Allerdings kann weder run noch execute ein " Quake" starten. Unter MorphOS geht allerdings diese Namensgebung, und das Programm bleibt startbar. Ob das ein Fehler ist oder nicht müsste man Andreas fragen. (Unter Windows kann man keine Leerstelle am Anfang setzen das wird automatisch von Win korrigiert. Ich habe jetzt weiter auf Windows rumprobiert und mein Winxp 64 Bit Pfad heisst z.b C:\Program Files (x86)\Raven\Star Trek Voyager Elite Force\quake3alt.exe Es kommt dann ein c:\Programm not Found Der Pfad ist richtig gespeichert, die exe wird richtig angezeigt, und wenn man alle Leerstellen aus dem Pfad entfernt (Also wenn ich den gleichen Pfad unter Windows nur ohne Leerstellen mache da geht es auch) Es lieg also an den Leerstellen im Pfad. |
Autor: | Murmel [ 30 Jun 2010, 20:30 ] | ||
Betreff des Beitrags: | Re: Leerstellenproblem | ||
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 ? 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. |
Autor: | thomas [ 30 Jun 2010, 21:19 ] | |
Betreff des Beitrags: | Re: Leerstellenproblem | |
Natürlich nicht. Du hast es immer noch nicht verstanden. Die Anführungszeichen, die du in Run reinschreibst, gehören nicht zur Kommandozeile, sondern begrenzen nur die Zeichenkette. Wenn der Dateiname Leerzeichen enthält, muß er in der Kommandozeile, also innerhalb der Zeichenkette in Anführungszeichen eingefasst werden. Also Run("\" Quake3\""). Oder allgemein (ich vermute, .. ist bei Hollywood der Operator, um Strings miteinenader zu verketten): Run("\""..game$.."\" connect "..IP$.." password "..PW$) Ich weiß nicht, warum du da ein Semikolon drin hast. Zumindest bei AmigaOS ist das Semikolon ein Kommentarzeichen, das die Kommandozeile an der Stelle beendet und den Rest ignoriert. Vielleicht solltest du einfach mal sagen kommando$ = "\""..game$.."\" connect "..IP$.." password "..PW$ Print(kommando$) Run(kommando$) Wobei ich jetzt mal angenommen habe, daß es eine Funktion Print() gibt, die einfach den Text irgendwohin ausgibt, sozusagen als Debug. Das was da rauskommt, muß man so auch in ein Dos-Fenster eingeben können. Wenn es da nicht funktioniert, funktioniert es auch mit Run() nicht. Gruß Thomas |
Seite 1 von 1 | Alle Zeiten sind UTC |
Powered by phpBB® Forum Software © phpBB Limited Deutsche Übersetzung durch phpBB.de |