AMIGA-RESISTANCE

Die Projektseite für alles rund um den Amiga
Aktuelle Zeit: 19 Apr 2024, 02:21

Alle Zeiten sind UTC


 

 

 



Ein neues Thema erstellen  Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Leerstellenproblem
BeitragVerfasst: 28 Apr 2010, 23:29 
Offline
Schreiberling

Registriert: 10 Aug 2007, 23:47
Beiträge: 262
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


Nach oben
   
 Betreff des Beitrags: Re: Leerstellenproblem
BeitragVerfasst: 29 Apr 2010, 16:55 
Offline
Schreiberling
Benutzeravatar

Registriert: 17 Okt 2007, 21:48
Beiträge: 1392
Postleitzahl: 4132
Land: Schweiz
Wohnort: Muttenz
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


Nach oben
   
 Betreff des Beitrags: Re: Leerstellenproblem
BeitragVerfasst: 04 Mai 2010, 18:52 
Offline
Schreiberling

Registriert: 10 Aug 2007, 23:47
Beiträge: 262
Hi Tipsi.

Erstmal Danke für Deinen Tip :) Ich hatte leider noch nicht soviel Zeit da weiter rumzuprobieren, die Tage wieder. Allerdings ist es so das die spiel.exe in der Variable game$ steckt, und ich habe es bisher noch nicht
geschafft das vernünftig zusammenzusetzen.

Mich wunder aber generell das so eine Leerstelle nicht wie ein normales Zeichen gehandelt wird.

Grüss,

Murmel


Nach oben
   
 Betreff des Beitrags: Re: Leerstellenproblem
BeitragVerfasst: 05 Mai 2010, 21:16 
Offline
Schreiberling
Benutzeravatar

Registriert: 17 Okt 2007, 21:48
Beiträge: 1392
Postleitzahl: 4132
Land: Schweiz
Wohnort: Muttenz
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


Nach oben
   
 Betreff des Beitrags: Re: Leerstellenproblem
BeitragVerfasst: 28 Jun 2010, 20:44 
Offline
Schreiberling

Registriert: 10 Aug 2007, 23:47
Beiträge: 262
Tipsi hat geschrieben:
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
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


Nach oben
   
 Betreff des Beitrags: Re: Leerstellenproblem
BeitragVerfasst: 29 Jun 2010, 16:20 
Offline
Schreiberling
Benutzeravatar

Registriert: 17 Okt 2007, 21:48
Beiträge: 1392
Postleitzahl: 4132
Land: Schweiz
Wohnort: Muttenz
Salli Murmel

Bei diesem Sonnenschein im Moment sowie
der FussballWM begreiffe ich, dass Du nicht
oft hier bist. :D

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


Nach oben
   
 Betreff des Beitrags: Re: Leerstellenproblem
BeitragVerfasst: 30 Jun 2010, 17:49 
Offline
Schreiberling

Registriert: 10 Aug 2007, 23:47
Beiträge: 262
Hi Tipsi.
Tipsi hat geschrieben:
Salli Murmel

Bei diesem Sonnenschein im Moment sowie
der FussballWM begreiffe ich, dass Du nicht
oft hier bist. :D
Das wäre schön. Bei mir lags eher an der Arbeit und privatem Mist oo
Zitat:
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.
Ok danke für die info. Soweit hatte ich jetzt nicht gedacht.
Zitat:
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.
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
Zitat:
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)?
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
Zitat:
Oder hab ich etwas nicht verstanden? Meinst
Du etwas anderes?
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


Nach oben
   
 Betreff des Beitrags: Re: Leerstellenproblem
BeitragVerfasst: 30 Jun 2010, 19:05 
Offline
vielschreiber

Registriert: 30 Okt 2005, 10:29
Beiträge: 118
Postleitzahl: 0
Land: Deutschland
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


Nach oben
   
 Betreff des Beitrags: Re: Leerstellenproblem
BeitragVerfasst: 30 Jun 2010, 19:52 
Offline
Schreiberling

Registriert: 10 Aug 2007, 23:47
Beiträge: 262
@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.


Nach oben
   
 Betreff des Beitrags: Re: Leerstellenproblem
BeitragVerfasst: 30 Jun 2010, 20:30 
Offline
Schreiberling

Registriert: 10 Aug 2007, 23:47
Beiträge: 262
thomas hat geschrieben:
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 ?
Zitat:
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.


Nach oben
   
 Betreff des Beitrags: Re: Leerstellenproblem
BeitragVerfasst: 30 Jun 2010, 21:19 
Offline
vielschreiber

Registriert: 30 Okt 2005, 10:29
Beiträge: 118
Postleitzahl: 0
Land: Deutschland
Zitat:
Ich habe nur mal versucht ob ich " Quake3" mit run(" Quake3") starten könnte und das geht z.b nicht.
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


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 11 Beiträge ] 

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Gehe zu: 

cron