Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MCISendString und Leerzeichen im Dateinamen? (https://www.delphipraxis.net/108666-mcisendstring-und-leerzeichen-im-dateinamen.html)

Elko 17. Feb 2008 14:34


MCISendString und Leerzeichen im Dateinamen?
 
Hallo Leute,
ich will in meinem Programm nur einen wav-Sound abspielen: C:\WINDOWS\Media\Windows XP-kritischer Fehler.wav
Leider klappt's bei mir nicht :? Das heißt, das Programm lässt sich zwar kompilieren, aber es kommt kein Sound...
Ich habe auch schon viel im Internet gesucht und dabei herausgefunden, dass mein Problem offensichtlich mit der Tatsache, dass der Dateiname Leerzeichen enthält, zu tun hat. Leider haben viele Versuche mit " bei mir nicht geklappt :gruebel:
Kennt jemand einen Kniff, der mir weiterhilft? Wär' super! :cheer:

Hier mal der Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  FileName = '"C:\WINDOWS\Media\Windows XP-kritischer Fehler.wav"';
begin
label1.Caption := inttostr(  MCISendString(PChar('open ' + FileName), nil, 0, Handle));
end;
Im Label wird dann 296 ausgegeben (falls das jemandem weiterhilft :cyclops: )

In manchen Codeausschnitten hab' ich ansatt "Handle" auch eine "0" gefunden, was macht das denn für einen Unterschied, bzw. wofür sind beide gut?
Außerdem habe ich manchmal noch ein "+ ' type sequencer alias sound'" hinter "Filename" gefunden, wovon ich auch nicht weiß, was es bewirken soll :stupid:

Liebe Grüße,
Elko

marabu 17. Feb 2008 15:01

Re: MCISendString und Leerzeichen im Dateinamen?
 
Hallo Elko,

MCI versteht keine langen Dateinamen - da hilft nur sowas hier:

Delphi-Quellcode:
function GetShortPathName(fn: TFileName): TFileName;
var
  buf: array [0..MAX_PATH] of Char;
begin
  SetString(Result, PChar(@buf),
    Windows.GetShortPathName(PChar(fn), @buf, MAX_PATH)
  )
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  FileName = '"C:\WINDOWS\Media\Windows XP-kritischer Fehler.wav"';
begin
  label1.Caption := inttostr( MCISendString(PChar('open ' + GetShortPathName(FileName)), nil, 0, Handle));
end;
Getippt und nicht getestet.

Grüße vom marabu

Christian Seehase 17. Feb 2008 15:02

Re: MCISendString und Leerzeichen im Dateinamen?
 
Moin Elko,

schau Dir doch mal die Dokumentation zu den vor Dir verwendeten Funktionen an (z.B. MSDN-Library durchsuchenMCISendString).
296 ist ein Fehlercode, den Du Dir mit MSDN-Library durchsuchenmciGetErrorString wohl auch in eine lesbare Fehlerbeschreibung umwandeln kannst.

Elko 17. Feb 2008 15:15

Re: MCISendString und Leerzeichen im Dateinamen?
 
Ahhhhhhh, jetzt funktionierts, Danke! Allerdings muss ich die doppelten Anführungszeichen dann weglassen :dancer:
Die Dokumentationen muss ich mir mal in einer ruhigen Minute anschauen :) (scheint viel zu sein^^)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz