Announcement

Collapse
No announcement yet.

Wav's in DLL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wav's in DLL

    Wie kann ich Wave Dateien in einer DLL speichern und diese auslesen?
    Ich möchte z.B. 5 Wavs speichern.

    Aus meinem Programm heraus will ich auf die einzelnen Wavs zugreifen und diese abspielen.

    z.B. Wave001 beim oncreate von Form1

  • #2
    Hallo,

    in den Ressourcen können beliebige Daten gespeichert werden, so auch WAVs. Falls Delphi 5 nicht zur Verfügung steht, geht man dabei folgendermassen vor:

    1. RC-Datei mit dem Inhalt dlgclose WAVE dlgclose.wav anlegen. Dabei ist der erste Wert der frei wählbare Ressourcenname, der zweite Wert kennzeichnet den Ressourcentyp und der letzte Wert ist die WAVE-Datei, die in die Ressourcen eingebunden werden soll.

    2. Mit BRCC32.EXE wird die RC-Datei in eine RES-Datei compiliert (bei Delphi 5 passiert das automatisch, wenn die RC-Datei in die Projektverwaltung eingebunden wird).

    3. Im Programm wird die so erzeugte zweite RES-Datei eingebunden, somit sollte der folgende Aufruf den Sound abspielen (die Zeichenkette "DLGCLOSE" entspricht dabei dem Namen der WAVE-Ressource, der in der RC-Datei vergeben wurde):

    <pre>
    PlaySound('DLGCLOSE', hInstance, SND_SYNC or SND_RESOURCE or SND_NODEFAULT);
    </pre>
    Eine umfangreichere Beschreibung, wie alle möglichen Typen in den Ressourcen verpackt werden können, findet sich in meinem neuen Buch <b>Delphi Win32-Lösungen</b>

    Comment


    • #3
      Ich möchte die Wavs nicht in Resourcen sondern in DLLs speichern, weil ich vermeiden will, das die EXE permanent zu groß ist.
      Können sie mir da vieleicht einen Tip geben

      Comment


      • #4
        Hallo,

        eine Ressouce wird als binärer Anhang einer EXE oder eine DLL zugeordnet. Das folgende Beispiel stammt aus meinem Buch <b>Delphi Win32-Lösungen</b>:
        <pre>
        { ************************************************** **************
        Source File Name : WaveDLL.dpr
        Typ : DLL
        Autor : Andreas Kosch
        Erstellt am : 12.04.97
        Compiler : Delphi 3.0
        Betriebssystem : Windows 95
        Beschreibung : WAV-Ressourcen in einer DLL
        Revisionen : -
        ************************************************** ************** }

        library WaveDLL;

        uses
        SysUtils;

        {$R DLGOPEN.RES}
        {$R DLGCLOSE.RES}
        {$R NEXTREC.RES}

        begin
        end.
        </pre>
        Wie zu sehen ist, besteht die DLL nur aus über <b>$R</b> eingebundenen Ressourcen, wobei jede dieser binären RES-Dateien eine WAV-Datei enthält.

        Der Client kann nun die DLL bei Bedarf laden und die WAVs aus den DLL-Ressourcen abspielen:
        <pre>
        uses MMSystem;

        var
        hDLL : THandle;

        procedure TFormMain.BitBtnPlayClick(Sender: TObject);
        begin
        hDLL := LoadLibrary('WAVEDLL.DLL');
        if hDLL <> 0 then begin
        PlaySound('DLGOPEN', hDLL, SND_SYNC or SND_RESOURCE or SND_NODEFAULT);
        FreeLibrary(hDLL);
        end;
        end;
        </pre&gt

        Comment

        Working...
        X