| Autor |
Beitrag |
Mister X-Ray
      
Beiträge: 41
Win XP, Win 2000
D7 Pers, D2005 Pers
|
Verfasst: Di 23.08.05 18:14
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
_________________ Wissen ist Macht, aber nichts wissen macht nichts !
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Di 23.08.05 18:57
vielleicht mit Delphi-Quelltext 1:
| mciSendString('OPEN ' + quotedstr(fn) + ' TYPE MPEGVIDEO ALIAS datei', nil, 0, 0); |
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Mister X-Ray 
      
Beiträge: 41
Win XP, Win 2000
D7 Pers, D2005 Pers
|
Verfasst: 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...
_________________ Wissen ist Macht, aber nichts wissen macht nichts !
|
|
BasicMan33
      
Beiträge: 54
Win 95, Win XP
D7
|
Verfasst: 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
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 10.09.05 10:56
@basicman: wenn du mit shortfilename arbeitest, brauchst du keine hochkommas mehr zu verwenden.
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; |
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
|