"C:\Datei.mp3" zu "C:\\Datei.mp3" ohne String zu zerpflücken
-
Nanyuki schrieb:
Da wird nichts escaped... Escapezeichen werden zur Kompilierzeit ausgewertet.
Stimmt. Aber damits jeder versteht:
Den Doppelbacklash brauchst du nur, wenn du Text mit Anführungszeichen in deinen Quellcode schreibst.
char* Str = "C:\\Datei.mp3"; // In Str steht jetzt 'C:\Datei.mp3'Wenn in deinem String sowieso schon 'C:\Datei.mp3' drinsteht, dann lass es so, das ist schließlich der gültige Dateiname. Mit 'C:\\Datei.mp3' kann dein Dateisystem nichts anfangen!
Du musst unterscheiden zwischen dem, was im String drinsteht und dem, was du als konstanten Text in deinem Quellcode schreibst á lá "C:\...".
Bevor dein Programm zu einer Exe-Datei (bzw Dll) zusammengebastelt wird, ersetzt der Compiler alle "\" in reingeschriebenem Text zu "\".Das Ganze hat den Sinn, dass du Zeichen wie '\r' und '\n' ausdrücken kannst. '\r' wird zum Carriage-Return-Zeichen. Das geht aber nur, wenn das alleinstehende Zeichen '\' keine Bedeutung hat, denn sonst würde im String wortwörtlich '\r' (Backslash und dann ein r) drinstehen. Damit man den Backslash aber auch in seine Zeichenketten einbauen kann, drückt man einen Backslash mit '\' aus.
Was aber schon in einer Variable irgendwo im Arbeitsspeicher drinsteht, das interessiert niemanden. Da steht ein einzelner Backslash auch nur für einen einzelnen Backslash. Und das Carriage-Return-Zeichen steht in der String-Variable auch nicht als zwei Buchstaben (\r), sondern als ein einzelnes Zeichen mit dem Wert 10.
-
du musst aber glaub ich hinten und vorne ein backslash hinmachen damit du auch dateinamen mit leerzeichen drin benutzen kannst.
-
ach sorry ich meinte nicht backslash sondern "
-
Hier geht's nicht um Shell.
-
mciSendString muss aber wissen was zum dateinamen gehört und was die optionen sind
-
Also WENN ein Dateinamen Leerzeichen enthält, MUSST du den mit doppelten Anführungszeichen 'umranden'.
Im Quellcode also mit:
\"C:\\Meine Musik\\Ein anderer Ordner\\beispiel_datei.mp3\"(Siehe dazu auch noch einmal Badestrand's gute Erläuterung bzgl. Escape-Sequenzen
)
-
Sry, dass ich mich so spät erst wieder melde. Also der Dateiname besitzt Leerzeichen.
@Badestrand: Scheinbar sieht das mciSendString nicht so. denn wenn ich in den Quellcode "C:\datei.mp3" schreibe, dann sagt er, dass er die nicht abspielen kann. Wnn ich aber "C:\\datei.mp3" schreibe, dann macht er keine Probleme. Das macht er auch, wenn ich das in eine Variable schreibe.
-
@Escaped:
Huh?!, Hast du Badestrands Post überhaupt verstanden ?!Escaped schrieb:
Also der Dateiname besitzt Leerzeichen
Haste jetzt mal Anführungszeichen gesetzt ?
-
CodeFinder schrieb:
@Escaped:
Huh?!, Hast du Badestrands Post überhaupt verstanden ?!Anscheinend nicht

Alles umsonst geschrieben^^
-
Escaped schrieb:
Sry, dass ich mich so spät erst wieder melde. Also der Dateiname besitzt Leerzeichen.
@Badestrand: Scheinbar sieht das mciSendString nicht so. denn wenn ich in den Quellcode "C:\datei.mp3" schreibe, dann sagt er, dass er die nicht abspielen kann. Wnn ich aber "C:\\datei.mp3" schreibe, dann macht er keine Probleme. Das macht er auch, wenn ich das in eine Variable schreibe.Klar wenn du den String in den Quellcode schreibst brauchst du das. Ansonsten nicht.
-
pfad zur satein im quelltext:
"C:\\Music File.mp3"
pfad geholt durch dialog:
"C:\Music File.mp3"eigentlich ganz einfach #gg
schonmal GetLastError gemacht ?
-
So wieder da.
Ja ich hzabe 'Badestrands Post glesen, verstanden und sonst was eben. Allerdings ändert das leider nichts am Problem, weshalb ich darauf nicht näher eingegangen bin. GetLastError () habe ich noch nicht probiert, wird aber glaube ich auch nichts bringen...
-
läuft es denn bei dateien ohne leerzeichen im dateinamen?