Thema: Delphi Audiodateien einbinden

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#22

Re: Audiodateien einbinden

  Alt 28. Sep 2003, 02:10
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat