Autor |
Beitrag |
Baltus
Hält's aus hier
Beiträge: 12
Win XP
Delphi 5
|
Verfasst: Do 17.05.07 12:50
Hallo,
ich hab schon überall geschaut, doch alles hat irgendwie nicht so recht geklappt. Also ich möchte kurze Audiodateien in meine Anwendung einbinden, soll heißen, dass die Anwendung größer wird und ich die Sounds auch dann abspielen kann, wenn die Anwendung nicht im selben Ordner, wie die Audiodateien liegt. Oder dass ich nur eine Resourcendatei immer mit der Anwedung sein muss, doch aus resourcen konnte ich bis jetzt noch keinen einzigen Sound abspielen, nur aus WAVE. Kenn ihr vielleicht ein Programm, mit dem man .res Dateien erzeugen kann, mit WAVE-Dateien drin?!
Außerdem möchte ich gerne mehrere Sounds gleichzeitig abspielen, da es sich um ein kleines Spiel handelt. Also eine Hintergrundmusik und dann noch Geräusche von Gegnern, Angriffen, Umgebung etc.
Danke schon mal im voraus.
MfG
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Do 17.05.07 13:04
- Erstelle eine Ressourcen-Script-Datei (*.rc) mit Notepad. Dort gibst du folgendes ein:
1 WAVE "MeineWav.wav"
1 => der Index der Ressource
WAVE => kennzeichnet, dass es sich um eine WAV-Datei handelt
- Wenn du mehrere Audiodateien einfügen willst schreibst du:
1 WAVE "MeineWav1.wav"
2 WAVE "MeineWav2.wav"
...
- Öffne die MS-DOS Eingabeaufforderung und wechsel dort in das Bin-Verzeichnis von Delphi. Dort sollte eine Datei namens BRCC32.exe vorhanden sein. Gib also folgendes ein (MyResFile.rc ist die Resourcen-Script-Datei):
BRCC32 MyResFile.rc
- Nun wird die Datei MyResFile.res erstellt.
- Suche in deiner Unit in Delphi die Compiler-Direktive {$R *.DFM} und füge {$R MyResFile.res} hinzu:
Delphi-Quelltext 1: 2:
| {$R *.DFM} {$R MyResFile.res} |
- Füge zur Uses-Liste in deiner Unit die MMSystem-Unit hinzu:
Delphi-Quelltext 1: 2:
| uses Windows, Classes, ..., MMSystem; |
- Folgender Befehl spielt die Wave-Datei mit dem Index 1 ab:
Delphi-Quelltext 1:
| PlaySound(PChar(1), HInstance, snd_ASync or snd_Memory or snd_Resource); |
Für diesen Beitrag haben gedankt: Keith
|
|
Baltus 
Hält's aus hier
Beiträge: 12
Win XP
Delphi 5
|
Verfasst: Do 17.05.07 13:25
Ja SUPER danke!!!!
Aber wie kann ich mehrere Sounds gleichzeitig abspielen?? Bis jetzt wird der erste immer gestoppt und dann der zweite Abgespielt...Ich möchte ja, dass zusätzlich zum ersten noch der zweite oder auch noch ein dritter abgespielt wird...
Kann ich auf die weiße auch Bitmaps und Icons in die Resourcedatei laden?
MfG
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Do 17.05.07 13:32
|
|
Baltus 
Hält's aus hier
Beiträge: 12
Win XP
Delphi 5
|
Verfasst: Do 17.05.07 13:51
Delphi-Quelltext 1:
| PlaySound(PChar(1), HInstance, snd_Memory or snd_Resource); |
Es wird zwar noch Musik abgespielt, jedoch ist das Programm solange der Sound abgespielt wird nicht ansprechbar...
|
|
neocox
      
Beiträge: 44
|
Verfasst: Fr 24.04.09 18:24
erstma danke... funzt auch bei mir  wie kann ich den sound als loop abspielen lassen ? also endlos ?
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 24.04.09 18:41
Moin!
neocox hat folgendes geschrieben : | erstma danke... funzt auch bei mir wie kann ich den sound als loop abspielen lassen ? also endlos ? |
Schau dir doch mal die entsprechenden Konstanten in der mmSystem.pas an oder drück Strg+Space beim letzten Parameter. Dann überlegen wir noch mal kurz, was auf Englisch wiederholen, endlos, Schleife, etc.pp. heißen könnte... "loop", richtig.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
neocox
      
Beiträge: 44
|
Verfasst: Fr 24.04.09 18:52
naja ich wusste schon, dass es loop is. aber es funzt net - ich gebs irgendwie verkehrt ein
Delphi-Quelltext 1: 2:
| PlaySound(PChar(1), hInstance, SND_ASYNC or SND_MEMORY or SND_RESOURCE); SND_Loop = 2; |
aber is ja falsch. ich find die richtige lösung net
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 24.04.09 18:57
Moin!
Delphi-Quelltext 1:
| PlaySound(PChar(1), hInstance, SND_ASYNC or SND_MEMORY or SND_RESOURCE or SND_LOOP); | Na, so wie die anderen Flags eben auch...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
neocox
      
Beiträge: 44
|
Verfasst: Fr 24.04.09 19:14
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 24.04.09 19:20
SND_LOOP sagt nur, dass wiederholt werden soll, eine Anzahl gibts da nicht...
Siehe Dokumentation: msdn.microsoft.com/e...ibrary/ms712879.aspx
|
|
ness
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 21.07.09 05:07
BEI MIR FUNKTIONIERT DAS ALLES NICHT!
Ich kriege eine Zugriffsverletzung!!!!!
Habe Delphi 2007,habe auch RICHITIG eine RIS.rc erstellt ,und auf BIN und alle Audiodateien reingetan,dann mit MS DOS RICHTIG KOMPILIERT!
Dannach die ris.res in delphi projekt ordner reingetan,dann in unit mmsystem und alles drum und dran hinzugefuegt und TROTZDEM FUNZT ES NICHT!
Eine Exeption ist aufgetreten!
SO langsam geht mir Delphi auf den SACK!
Brauche unbedingt RAT,wie ich das Problem beheben kann!
HAB eine Button1 Funktion,MEHR AUCH NICHT!
DADRINNE steht folgendes:
PlaySound(PChar(1), HInstance, snd_ASync)
///Mehr auch nicht!
|
|
Teekeks
      
Beiträge: 211
Erhaltene Danke: 23
|
Verfasst: Di 21.07.09 07:53
Hast du denn auch das hier drin?
Delphi-Quelltext 1: 2:
| {$R *.DFM} {$R ris.res} |
Und: Schrei nicht so und ein Ausrufezeichen reicht völlig.
Achso: und das dürftest du auch brauchen: SND_RESOURCE
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 21.07.09 14:26
|
|
ness
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 22.07.09 00:06
jaenicke hat folgendes geschrieben : | ness hat folgendes geschrieben : | Delphi-Quelltext 1:
| PlaySound(PChar(1), HInstance, snd_ASync) | | Da gehört der Name der Ressource hinein, den du in der Ressourcendatei vergeben hast.
Ansonsten siehe Teekeks, was er geschrieben hat, gehört auch dazu. |
Problem habe ich entdeckt! Wenn ich die " NICHT schreibe,funzt es dann!
Ich habe ein neues Problem!
Die LOOP Funtkion funktioniert GARNICHT!
Button1:
SndPlaySound( 'intro.WAV', SND_LOOP );
Es wird nur einmal abgespielt! Die Sounddatei ist nur 5 Sekunden lang! Wieso funktioniert das nicht?
Edit: Ich moechte aber auch,dass das Programm dabei REAGIERT und nicht einfriert!!!!!
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 22.07.09 04:38
ness hat folgendes geschrieben : | Edit: Ich moechte aber auch,dass das Programm dabei REAGIERT und nicht einfriert!!!!! |
Du hast das async ja wieder rausgenommen...
Vielleicht solltest du dir in der Dokumentation einmal die Flags anschauen, falls dir gar nicht klar war was das async macht. Zudem hast du jetzt die veraltete sndPlaySound Funktion erwischt, die man nicht mehr nutzen sollte.
Mit der Ressource sollte es so gehen... Delphi-Quelltext 1:
| PlaySound('ResourceName', HInstance, SND_ASYNC or SND_LOOP or SND_RESOURCE); |
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 22.07.09 11:09
Moin!
jaenicke hat folgendes geschrieben : | Zudem hast du jetzt die veraltete sndPlaySound Funktion erwischt, die man nicht mehr nutzen sollte. |
Aha, was sollte man denn alternativ nutzen?  AFAIK nutzt selbst der Explorer die, um die ganzen Ereignis-Sounds abzududeln...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Mi 22.07.09 11:30
_________________ Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus...
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 22.07.09 12:02
Moin!
turboPASCAL hat folgendes geschrieben : | Na, PlaySound. Das Teil kann ein wenig mehr als sndPlaySound.
[...]
Wie kommst du darauf ? |
 Irgendwie ist mir das snd wohl durchgerutscht...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|