Moin Häcki,
eigentlich steht hier im Thread schon alles was Du brauchst. Ich fasse das mal zusammen:
Du erstellst eine Textdatei mit der Endung RC.
In dieser schreibst Du eine (ggf. auch mehrere) Zeile, die folgenden Aufbau hat:
NameDerResource TypDerResource PfadZuDerDateiDieDieResourceEnthält
NameDerResource meint die Bezeichnung, unter der Du die Resource später im Programm ansprechen kannst.
TypDerResource bezeichnet einen vordefinierten Resourcentyp, z.B. WAVE oder BITMAP, oder einen selbsterdachten, was hier aber keine Rolle spielen wird.
PfadZuDerDateiDieDieResourceEnthält gibt den Namen der Resourcendatei an, und den Pfad, der auch relativ zur Lage der RC Datei angegeben werden kann (bei Leerzeichen im Pfad in "" einschliessen)
Beispiel:
bild BITMAP Graphics\Photo.bmp
es soll eine Resource vom Typ BITMAP eingebunden werden, die im Programm mit der Bezeichnung bild angesprochen werden kann. Hierzu soll die Datei Photo.bmp hinzugefügt werden, die sich im Verzeichnis Graphics befindet, das sich im gleichen Verzeichnis befindet, wie die RC Datei.
Du könntest jetzt also eine Datei erstellen, als Beispiel nenne ich sie SOUNDFILE.RC. Da hinein kommt eine Zeile:
MySound WAVE MySound.wav
Nur zur Sicherheit, falls Jens' Variante nicht funktioniert, kannst Du jetzt eine Resourcendatei erstellen:
Konsole öffnen, BRCC32 eingeben, und die SOUNDFILE.RC per Drag&Drop in das Konsolenfenster ziehen. Enter.
Jetzt sollte der Resourcencompiler eine SOUNDFILE.RES im gleichen Verzeichnis angelegt haben, in der sich auch die SOUNDFILE.RC befindet.
Und jetzt folgt nur noch ein Ausschnitt aus der
Unit in der die Datei abgespielt werden soll (wichtig: unter uses die
unit mmsystem mit einbinden):
Delphi-Quellcode:
implementation
uses mmsystem;
{$R *.DFM}
{$R SOUNDFILE.RES}
// Abspielen der Wavedateiresource
procedure TForm1.Button1Click(Sender: TObject);
begin
// 'MySound' = Name der Resource (erster Wert in der RC Datei)
// 0 = Handle zur Datei aus der die Resource geladen werden
// soll. Wird hier nicht gebraucht, da diese EXE auch
// die Resource enthält. Man kann auch hInstance angeben
// SND_RESOURCE = Der erste Parameter gibt den Namen einer Resource an
// SND_ASYNC = Die Funktion startet das Abspielen, und kehrt dann
// sofort zurück.
// Ansonsten würde das Ende des Abspielens abgewartet,
// und das Programm würde an dieser Stelle stehenbleiben
PlaySound('
MySound',0,SND_RESOURCE
or SND_ASYNC);
end;
// Abspielen stoppen
procedure TForm1.Button2Click(Sender: TObject);
begin
// nil = Das Abspielen der aktuellen Wavedatei wird beendet
PlaySound(
nil,0,0);
end;
Fertig.
Jetzt kann man mit Button1 die Wavedatei aus der Resource abspielen, und das Abspielen mit Button2 stoppen.