JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=3b96e4ff9385b905924679c9c67acb97Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

[DOS]Platzhalter für Leerzeichen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
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

BeitragVerfasst am: 22.03.2006, 17:46    Titel: [DOS]Platzhalter für Leerzeichen Antworten mit Zitat

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 Confused

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 22.03.2006, 22:14    Titel: Antworten mit Zitat

ich befürchte dass es das nicht gibt, oder? immerhin durfte man in dos glaube ich keine leerzeichen verwenden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 22.03.2006, 23:30    Titel: Antworten mit Zitat

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... Confused
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 23.03.2006, 09:39    Titel: Antworten mit Zitat

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 Wink
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 23.03.2006, 11:56    Titel: Antworten mit Zitat

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 Sad

<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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 24.03.2006, 11:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 24.03.2006, 14:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 26.03.2006, 14:03    Titel: Antworten mit Zitat

Okay...die Lösung ist so simpel, dass ich nicht von selbst drauf gekommen bin Rolling Eyes *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 Wink
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum