Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Syntax SendMCICommand (https://www.delphipraxis.net/169470-syntax-sendmcicommand.html)

Dunkelbunt27 22. Jul 2012 21:12

Syntax SendMCICommand
 
Hallo Delphi-PRAXIS,

Ich möchte einen variablen Pfad in folgender Prozedur einsetzen?

Normalerweise würde der Aufruf ja wie folgt aussehen:
Zitat:

Delphi-Quellcode:
SendMCICommand('open waveaudio shareable');
SendMCICommand('play "C:\xyz\BackgroundMusic.wav"');
SendMCICommand('play "C:\xyz\AnotherMusic.wav"');
SendMCICommand('close waveaudio');

Wenn man aber keinen festen Pfad angeben möchte, sondern den Pfad der in dem String "Pfad" gespeichert ist nutzen will, wie schreibt man das syntaktisch?

Delphi-Quellcode:
//Beispielsweise:
Pfad := ExtractFilePath(Application.ExeName) + '/Sounds/Sound1.wav';
Folgender Code ist falsch:
Delphi-Quellcode:
SendMCICommand('play Pfad');
Ich hoffe jemand versteht mein Problem, ist sicherlich wirklich nichts besonderes, ich weiß nur einfach nicht wie man das richtig schreibt...

Danke für eure (hoffentliche) Hilfe

Bummi 22. Jul 2012 22:17

AW: Syntax SendMCICommand
 
Delphi-Quellcode:
Pfad := '"'+ExtractFilePath(Application.ExeName) + '\Sounds\Sound1.wav"'
SendMCICommand('play ' + Pfad);

himitsu 22. Jul 2012 23:02

AW: Syntax SendMCICommand
 
Zitat:

Zitat von Bummi (Beitrag 1175591)
Delphi-Quellcode:
Pfad := '"'+ExtractFilePath(Application.ExeName) + '\Sounds\Sound1.wav"'
SendMCICommand('play ' + Pfad);

\\ ?

Delphi-Quellcode:
// Path = mit \ am Ende
Pfad := '"' + ExtractFilePath(Application.ExeName) + 'Sounds\Sound1.wav"';
SendMCICommand('play ' + Pfad);

// Dir = ohne \ am Ende (gut, mit einer kleinen Ausnahme)
Pfad := '"' + ExtractFileDir(Application.ExeName) + '\Sounds\Sound1.wav"';
SendMCICommand('play ' + Pfad);

// aber da die " eigentlich nicht zum "Pfad" gehören
Pfad := ExtractFilePath(Application.ExeName) + 'Sounds\Sound1.wav';
SendMCICommand('play "' + Pfad + '"');

Bummi 23. Jul 2012 06:24

AW: Syntax SendMCICommand
 
@himitsu

sorry und danke ... ich war müde...

Dunkelbunt27 23. Jul 2012 09:59

AW: Syntax SendMCICommand
 
Liste der Anhänge anzeigen (Anzahl: 1)
Super, danke für eure Hilfe!
Der Code sieht jetzt so aus:
Delphi-Quellcode:
//globale Variable in Hauptform, weil ich nicht wusste wie ich das anders lösen sollte
ExePfad := ExtractFilePath(Application.ExeName);

//in Extra Unit
procedure SoundAbspielen(sound: byte);
begin
    SendMCICommand('open waveaudio shareable');
    case Sound of
  // 1: SendMCICommand('play "Sounds\Sound1.wav"'); //Funktioniert, ist aber nicht optimal
     1: SendMCICommand('play "'+ExePfad+ 'Sounds\Sound1.wav"'); //Wirft einen Fehler auf
    end;
    SendMCICommand('close waveaudio');  
end;
Beim Debugging steht da, dass folgender Pfad raus kommt:
SendMCICommand('play "C:\Users\...\Sounds\Sound1.wav"');

SendMCICommand gibt den Error aus dem Anhang aus.
("Gerät ist nicht geöffnet oder wird vom MCI nicht erkannt.")

:?: Weiß jemand Rat? :?:

Dunkelbunt27 24. Jul 2012 16:21

AW: Syntax SendMCICommand
 
Liste der Anhänge anzeigen (Anzahl: 1)
(Ich kann den letzten Post jetzt leider nicht mehr editieren und im Nachhinein ist der Thread-Name ungünstig gewählt...)

Ich bin leider immer noch ratlos...
In der Unit kann man ja
Delphi-Quellcode:
ExtractFilePath(Application.ExeName)
nicht verwenden, deshalb habe ich ja ExePfad als globale Variable, was ziemlich unschön ist... Könnte darin irgendwie der Fehler liegen?

Ich habe mal die relevanten Code-Teile in ein Delphi Projekt gesteckt... die Exe zum Testen ist im Debug Ordner.
Ich hoffe damit kann mir jemand helfen...

himitsu 24. Jul 2012 16:41

AW: Syntax SendMCICommand
 
Zitat:

Zitat von Dunkelbunt27 (Beitrag 1175787)
In der Unit kann man ja
Delphi-Quellcode:
ExtractFilePath(Application.ExeName)
nicht verwenden,

Wieso nicht?

PS: Application.ExeName = ParamStr(0)

Dunkelbunt27 24. Jul 2012 16:51

AW: Syntax SendMCICommand
 
Zitat:

Zitat von himitsu (Beitrag 1175788)
PS: Application.ExeName = ParamStr(0)

Okay danke, das kannte ich noch nicht.
Auf jeden Fall ist das schon mal optimaler, aber der blöde Fehler kommt trotzdem...

EWeiss 24. Jul 2012 17:52

AW: Syntax SendMCICommand
 
Warum nicht einfach playsound anstelle von SendMCICommand? wenn du damit nicht klar kommst.
Deklariert in winmm.dll

Delphi-Quellcode:
PlaySound('Pfad zur Wav Datei', 0, SND_FILENAME Or SND_ASYNC);


Andererseits kannst ja mal hier schauen.

Einfach die Classe deinen bedürfnissen anpassen.
Ist zwar für Midi gemacht geht aber auch mit Wave.


gruss

Dunkelbunt27 24. Jul 2012 18:07

AW: Syntax SendMCICommand
 
Hallo EWeiss,
das Ding ist, ich brauche beides PlaySound und SendMCICommand.
Der Sound wird häufig schnell hintereinander wiedergegeben und soll sich dabei überlagern, so wie sich das Geräusch von den Tasten die du drückst überlagert (wenn du das schnell hintereinander machst). Dazu habe ich nicht viel gefunden und habe es so gelöst, dass immer abwechselnd der Sound mit PlaySound oder mit SendMCICommand wiedergegeben wird. Das erreicht zufriedenstellend dieses Ziel.
Darum muss SendMCICommand laufen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 Uhr.
Seite 1 von 6  1 23     Letzte »    

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