AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Syntax SendMCICommand

Ein Thema von Dunkelbunt27 · begonnen am 22. Jul 2012 · letzter Beitrag vom 18. Aug 2014
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#1

Syntax SendMCICommand

  Alt 22. Jul 2012, 21:12
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:
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
FG Dunkelbunt
"Wer zuletzt lacht hat den höchsten Ping"
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Syntax SendMCICommand

  Alt 22. Jul 2012, 22:17
Delphi-Quellcode:
Pfad := '"'+ExtractFilePath(Application.ExeName) + '\Sounds\Sound1.wav"'
SendMCICommand('play ' + Pfad);
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#3

AW: Syntax SendMCICommand

  Alt 22. Jul 2012, 23:02
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 + '"');
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Syntax SendMCICommand

  Alt 23. Jul 2012, 06:24
@himitsu

sorry und danke ... ich war müde...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#5

AW: Syntax SendMCICommand

  Alt 23. Jul 2012, 09:59
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?
Miniaturansicht angehängter Grafiken
error.png  
FG Dunkelbunt
"Wer zuletzt lacht hat den höchsten Ping"

Geändert von Dunkelbunt27 (23. Jul 2012 um 11:44 Uhr) Grund: Bessere Übersichtlichkeit
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#6

AW: Syntax SendMCICommand

  Alt 24. Jul 2012, 16:21
(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 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...
Angehängte Dateien
Dateityp: zip Test Sounds.zip (637,6 KB, 16x aufgerufen)
FG Dunkelbunt
"Wer zuletzt lacht hat den höchsten Ping"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#7

AW: Syntax SendMCICommand

  Alt 24. Jul 2012, 16:41
In der Unit kann man ja ExtractFilePath(Application.ExeName) nicht verwenden,
Wieso nicht?

PS: Application.ExeName = ParamStr(0)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#8

AW: Syntax SendMCICommand

  Alt 24. Jul 2012, 16:51
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...
FG Dunkelbunt
"Wer zuletzt lacht hat den höchsten Ping"

Geändert von Dunkelbunt27 (24. Jul 2012 um 18:04 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Syntax SendMCICommand

  Alt 24. Jul 2012, 17:52
Warum nicht einfach playsound anstelle von SendMCICommand? wenn du damit nicht klar kommst.
Deklariert in winmm.dll

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

Geändert von EWeiss (24. Jul 2012 um 18:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#10

AW: Syntax SendMCICommand

  Alt 24. Jul 2012, 18:07
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...
FG Dunkelbunt
"Wer zuletzt lacht hat den höchsten Ping"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 Uhr.
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