|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 22.03.2006, 17:46 Titel: [DOS]Platzhalter für Leerzeichen |
|
|
Hi,
ich suche nach einem Platzhalter, mit dem man in DOS sowohl Leerzeichen in Dateinamen als auch im Pfad zur Datei verwenden kann. Für die Dateinamen selbst klappt '*' oder '?' wunderbar. Allerdings wird der Pfad nicht gefunden, falls man die Leerzeichen der Oberordner durch eines dieser Zeichen ersetzt
Hat jemand eine Ahnung, ob es sowas auch für Pfade gibt? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 22.03.2006, 22:14 Titel: |
|
|
ich befürchte dass es das nicht gibt, oder? immerhin durfte man in dos glaube ich keine leerzeichen verwenden. |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 22.03.2006, 23:30 Titel: |
|
|
Hmm...dann ist aber die Frage, wieso es mit * und ? funktioniert. Für Leerzeichen im Dateinamen funktioniert das ja so nach dem "Platzhalterprinzip".
Aber komisch, dass das bei ganzen Pfaden anders ist... _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 23.03.2006, 09:39 Titel: |
|
|
Das Kommt jetzt auf die Umgebung drauf an:
Leerzeichen an und für sich waren zwar in DOS unerwünsct, hatten aber funktioniert - so konnte man durchaus eine (8.3)Datei mit dem Namen "read me.txt" erstellen. In wieweit sie von allen DOS-Programmen richtig verarbeitet werden konnte ist mir unbekannt. Ab Win95 und mit Einführung von Langen dateinamen sind Leerzeichen überhaupt kein Problem mehr gewesen.
Zur Suche: "* *.*" sucht eine Datei, welche explizit ein Leerzeichen enthält. "**" sucht grundsätzlich alle Dateien / Pfade, "*" sucht alle Verzeichnisse und eventuell auch Dateien ohne Endung
Noch anders ist es für die Suchmaske für die C-Funktion "findfirst()" - dort findet ein einfacher Stern in der Regel alles - und über Flags legt man fest, dass man z.B. nur Verzeichnisse haben möchte... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 23.03.2006, 11:56 Titel: |
|
|
Ich versuch mal, das Problem besser zu beschreiben:
Ich verwende für mein Programm eine externe Anwendung, der per Kommandozeile Argumente übergeben werden. Darunter befinden sich auch Pfade mit Dateinamen. Dummerweise kann ich jetzt nicht sicherstellen, dass der Enduser immer einen Pfad/eine Datei ohne Leerzeichen auswählt.
Bei einem solchen Fall existiert eben das schon erwähnte Problem, dass die Datei dann nicht gefunden wird. Für die Dateinamen selbst ist das Problem ganz einfach mit '*' oder '?' gelöst. Aber was, wenn der User jetzt z.B. irgendeine Datei unter C:\whatever\Dokumente und Einstellungen\ auswählt?
Da unter DOS ein Leerzeichen i.A. als Trennzeichen gilt, wird das natürlich als Ende des Arguments(bzw. hier des Pfades) gewertet.
Die Methode, dass man den Pfad einfach in Anführungsstriche setzt, sollte zwar in der MS-DOS-Eingabeaufforderung funktionieren - allerdings leider nicht bei dem externen Programm, dem ich per ShellExecuteEx die Argumente als Kommandozeile übergebe
<edit>
Falls das von Relevanz ist: Das Programm ist ffmpeg.exe (zum Umwandeln von Videos mit den verschiedensten Codecs)
</edit> _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 24.03.2006, 11:16 Titel: |
|
|
Wenn man z.B. Drag-n-Drop nutzt, um eine Datei auf die Exe zu ziehen, ist der Parameter so immer in Anführungszeichen gepackt. Bei ShellExecute (Registry??) geht das genauso - in dem du den Platzhalter %1 in Anführungszeichen setzt... Im Programmquelltext bist du für Anführungszeichen selbst verantwortlich. _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 24.03.2006, 14:49 Titel: |
|
|
Das verstehe ich jetzt nicht ganz...
Meinst du, für die Leerzeichen könnte man "%1" als Platzhalter verwenden? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 26.03.2006, 14:03 Titel: |
|
|
Okay...die Lösung ist so simpel, dass ich nicht von selbst drauf gekommen bin *lol*
Ein Platzhalter, der sowohl für Dateinamen als auch für Pfade eingesetzt werden kann ist " " (in Worten: Anführungsstriche-Leerzeichen-Anführungsstriche).
Anzumerken ist, dass das offenbar nicht immer über die MS-DOS-Eingabeaufforderung funktioniert, weil da offenbar z.T. noch Zeichen umgewandelt werden und die " plötzlich als á o.ä. angezeigt wurden. Wenn ichs aus dem Programm direkt mit ShellExecuteEx() übergebe, dann geht es jedenfalls _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|