Autor Beitrag
Baltus
Hält's aus hier
Beiträge: 12

Win XP
Delphi 5
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: 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:

    ausblenden Delphi-Quelltext
    1:
    2:
    {$R *.DFM}
    {$R MyResFile.res}


  • Füge zur Uses-Liste in deiner Unit die MMSystem-Unit hinzu:

    ausblenden Delphi-Quelltext
    1:
    2:
    uses 
      Windows, Classes, ..., MMSystem;


  • Folgender Befehl spielt die Wave-Datei mit dem Index 1 ab:

    ausblenden Delphi-Quelltext
    1:
      PlaySound(PChar(1), HInstance, snd_ASync or snd_Memory or snd_Resource);					


Für diesen Beitrag haben gedankt: Keith
Baltus Threadstarter
Hält's aus hier
Beiträge: 12

Win XP
Delphi 5
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Do 17.05.07 13:32 
user profile iconBaltus hat folgendes geschrieben:
Kann ich auf die weiße auch Bitmaps und Icons in die Resourcedatei laden?

Klar kannst du auch Bilder einfügen, die kannst du dann wieder mit
ausblenden Delphi-Quelltext
1:
  Image1.Picture.Bitmap.LoadFromResourceID(HInstance, 3);					

in ein Image laden. Hier das Bild mit dem Index 3.


user profile iconBaltus hat folgendes geschrieben:
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...

Leider ist meine Delphi Hilfe seit ein paar Tagen Schrott, deswegen kann ich dir nicht genau sagen, was du ändern musst. Versuch mal
ausblenden Delphi-Quelltext
1:
  PlaySound(PChar(1), HInstance, snd_Memory or snd_Resource);					
Baltus Threadstarter
Hält's aus hier
Beiträge: 12

Win XP
Delphi 5
BeitragVerfasst: Do 17.05.07 13:51 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 44



BeitragVerfasst: Fr 24.04.09 18:24 
erstma danke... funzt auch bei mir ;) wie kann ich den sound als loop abspielen lassen ? also endlos ?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 24.04.09 18:41 
Moin!

user profile iconneocox hat folgendes geschrieben Zum zitierten Posting springen:
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. :zwinker:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
neocox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 44



BeitragVerfasst: Fr 24.04.09 18:52 
naja ich wusste schon, dass es loop is. aber es funzt net - ich gebs irgendwie verkehrt ein
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 24.04.09 18:57 
Moin!

ausblenden 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... :D

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
neocox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 44



BeitragVerfasst: Fr 24.04.09 19:14 
so hatte ich das:

ausblenden Delphi-Quelltext
1:
PlaySound(PChar(1), hInstance, SND_ASYNC or SND_MEMORY or SND_RESOURCE or SND_LOOP=3)					


also für 3 wiederholungen ;)

Moderiert von user profile iconNarses: Color- durch Highlight-Tag ersetzt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 211
Erhaltene Danke: 23



BeitragVerfasst: Di 21.07.09 07:53 
Hast du denn auch das hier drin?
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 21.07.09 14:26 
user profile iconness hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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 user profile iconTeekeks, was er geschrieben hat, gehört auch dazu.
ness
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 22.07.09 00:06 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconness hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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 user profile iconTeekeks, 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 22.07.09 04:38 
user profile iconness hat folgendes geschrieben Zum zitierten Posting springen:
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...
ausblenden Delphi-Quelltext
1:
PlaySound('ResourceName', HInstance, SND_ASYNC or SND_LOOP or SND_RESOURCE);					
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 22.07.09 11:09 
Moin!

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Zudem hast du jetzt die veraltete sndPlaySound Funktion erwischt, die man nicht mehr nutzen sollte.
Aha, was sollte man denn alternativ nutzen? :shock: AFAIK nutzt selbst der Explorer die, um die ganzen Ereignis-Sounds abzududeln... :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
turboPASCAL
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP / Vischda
D6 PE / D2005 PE
BeitragVerfasst: Mi 22.07.09 11:30 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Zudem hast du jetzt die veraltete sndPlaySound Funktion erwischt, die man nicht mehr nutzen sollte.
Aha, was sollte man denn alternativ nutzen? :shock:

Na, PlaySound. ;) Das Teil kann ein wenig mehr als sndPlaySound.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
AFAIK nutzt selbst der Explorer die, um die ganzen Ereignis-Sounds abzududeln... :nixweiss:

Wie kommst du darauf ?

ausblenden Quelltext
1:
2:
3:
4:
5:
Offset(h)
00068498  72 6F 6C 44 65 74 61 69 6C 73 00 2E 00 00 6D 69 78 65 72 43  rolDetails....mixerC
000684AC  6C 6F 73 65 00 00 00 00 50 6C 61 79 53 6F 75 6E 64 57 00 00  lose....PlaySoundW..
...       00 00 6D 69 78 65 72 4F 70 65 6E 00 00 00 77 61 76 65 4F 75  ..mixerOpen...waveOu
...       74 47 65 74 4E 75 6D 44 65 76 73 00 00 00 6D 69 78 65 72 4D  tGetNumDevs...mixerM

_________________
Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus... :P
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 22.07.09 12:02 
Moin!

user profile iconturboPASCAL hat folgendes geschrieben Zum zitierten Posting springen:
Na, PlaySound. ;) Das Teil kann ein wenig mehr als sndPlaySound.
[...]
Wie kommst du darauf ?
:nut: Irgendwie ist mir das snd wohl durchgerutscht... :gruebel:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.