Entwickler-Ecke
Multimedia / Grafik - mciSendString will keine Leerzeichen?
Mister X-Ray - Di 23.08.05 18:14
Titel: mciSendString will keine Leerzeichen?
Hallo,
ich hab in meinem schon mal erwähnten Musik-Player einen Fehler gefunden: Er will keine Dateien mit Leerzeichen im Namen.
Das heisst Dateien mit Leerzeichen werden nicht abgespielt, welche ohne allerdings ohne Probleme. ich verwende
mciSendString('OPEN ' + fn + ' TYPE MPEGVIDEO ALIAS datei', nil, 0, 0);
Wie bekomme ich das weg?
Gruß
Mister X-Ray
retnyg - Di 23.08.05 18:57
vielleicht mit
Delphi-Quelltext
1:
| mciSendString('OPEN ' + quotedstr(fn) + ' TYPE MPEGVIDEO ALIAS datei', nil, 0, 0); |
Mister X-Ray - Mi 24.08.05 13:23
habs jetzt anders gelöst:
ich erstelle eine kopie mit einem anderen namen ohne leerzeichen, und die kopie wird dann abgespielt. Beim Schließen des Programms wird die Kopie gelöscht und fertig ist die Laube...
BasicMan33 - Do 01.09.05 21:55
Hi
Also @retnyg's Idee geht bei mir nicht und @Mister X-Ray's Idee gefällt mir nicht *g*.
Also muss was anderes her.
Deshalb liefere ich einfach mal ein Stück Code und ihr verbessert es so, dass man es auch ruhigen Gewissens in Programme einbauen kann. OK.
SendMCICommand ist eine Procedure/Funktion, in der der String ausgewerdet wird. Die
lass ich einfach weg, weil sie ja nichts mit dem Problem zu tun hat.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure ... var buffer : array[0..255] of Char; filename: PChar; Result, i : Integer; MusikFile: string; begin for i := 0 to 255 do buffer[i] := ' '; filename := PChar(OPENMUSIK.Filename); Result := GetShortPathName(filename, buffer, strlen(buffer)); if Result <> 0 then begin MusikFile := buffer; MusikFile := '"' + MusikFile + '"'; if MusikFile <> '' then SendMCICommand('play '+MusikFile); end; end; |
So auf den ersten Blick gefällt es mir noch nicht wegen der Konvertierungen mit PChar und
String. Deshalb einfach mal die Verbesserungen hier posten. Aber funktionieren tut es bei mir auf jeden Fall so.
retnyg - Sa 10.09.05 10:56
@basicman: wenn du mit shortfilename arbeitest, brauchst du keine hochkommas mehr zu verwenden.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| uses MMSystem;
...
procedure SendMCICommand(Cmd: string); var RetVal: Integer; ErrMsg: array[0..254] of char; begin RetVal := mciSendString(PChar(Cmd), nil, 0, 0); if RetVal <> 0 then begin mciGetErrorString(RetVal, ErrMsg, 255); MessageDlg(StrPas(ErrMsg), mtError, [mbOK], 0); end; end;
procedure playfile(const filename:string); var buffer : string; l:integer; begin l:=length(filename); setlength(buffer,l); GetShortPathName(@filename[1], @buffer[1], l); sendmcicommand('play '+buffer); end;
procedure TForm1.Button1Click(Sender: TObject); begin SendMCICommand('open waveaudio shareable'); playfile('C:\inetpub\wwwroot\kopie von dirty.mp3'); SendMCICommand('close waveaudio'); end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!