Avatar billede slowaterz Nybegynder
20. november 2001 - 10:39 Der er 11 kommentarer og
1 løsning

Hvordag tilføjer man en wav fil til et program

Er det muligt at tilføje en wav fil til programmet ? I stedet for at slæbe en ekstern wav fil med rundt.
Avatar billede martinlind Nybegynder
20. november 2001 - 10:42 #1
Som resoucre
Avatar billede pellelil Nybegynder
20. november 2001 - 11:00 #2
I mine programmer anvender jeg en RTF-fil til at indeholde information om programmet (til visning i programmets About-box). Denne linker jeg direkte ind i EXE filen, for (som du siger) at slippe for at \"slæbe\" rundt med en ekstern file.

Lav en .RC fil som evt, ser ud som flg.:
<SNIP>
resVersionHistory RT_RCDATA VersionHistory.rtf
</SNIP>

Denne tilføjes til dit project, og fortæller at den eksterne fil (\"VersionHistory.rft\") skal tilføjes resourcen, som igen linkes ind i EXE filen. Nedenstående vises hvordan jeg loader denne RTF ind og viser den i programmets aboutbox (du skal sikkert gøre noget tilsvarende for afspille din WAV):
<SNIP>
var
  RS: TResourceStream;
begin
  RS := TResourceStream.Create(HInstance, \'resVersionHistory\', \'RT_RCDATA\');
  try
    RichEdit1.Lines.LoadFromStream(RS);
  finally
    RS.Free;
  end;
end;
</SNIP>
Avatar billede slowaterz Nybegynder
20. november 2001 - 11:22 #3
martinlind <<< kan du ikke uddybe det lidt ? Hvordan opretter man en resource ud fra en wave fil? Og hvordan får man en TMediaPlayer til at spille den ?
Avatar billede martinlind Nybegynder
20. november 2001 - 11:25 #4
Kig på pellelil\'s eks.
Avatar billede slowaterz Nybegynder
20. november 2001 - 11:44 #5
TMediaPlayer ser ikke ud til at have en LoadFromStream method ... Er der eventuelt nogen andre komponenter, der kan bruges til afspille wave filer i et Delphi program ?
Avatar billede martinlind Nybegynder
20. november 2001 - 11:53 #6
API !
Avatar billede pellelil Nybegynder
20. november 2001 - 11:59 #7
Fandt den her:
<SNIP>
uses
  mmsystem;

procedure playwavestream(Stream : TMemoryStream);
begin
  if Stream = nil then
    sndPlaySound(nil,SND_ASYNC)
  else
    sndPlaySound(Stream.Memory, (SND_ASYNC or SND_MEMORY));
end;
</SNIP>
Avatar billede pellelil Nybegynder
20. november 2001 - 12:01 #8
Og den her:
<SNIP>
You need a resource compiler (i. E. Resource Workshop ) and add an
user-defined-resource WAVE. You can
play the resource-file in your program using

var FindHandle, ResHandle: THandle;
    ResPtr: Pointer;
begin
  FindHandle:=FindResource(HInstance, \'<Name of your Ressource>\', \'WAVE\');
  if FindHandle<>0 then begin
    ResHandle:=LoadResource(HInstance, FindHandle);
    if ResHandle<>0 then begin
      ResPtr:=LockResource(ResHandle);
      if ResPtr<>Nil then
        SndPlaySound(PChar(ResPtr), snd_ASync or snd_Memory);
      UnlockResource(ResHandle);
    end;
    FreeResource(FindHandle);
  end;
end;
</SNIP>
Avatar billede slowaterz Nybegynder
20. november 2001 - 12:45 #9
pellelil <<< tak, det kører bare. Du ved vel tilfældigvis, hvordam man styrer lydstyrken fra et Delphi program ? Jeg kan styre waveOut, men ikke overordnet lydstyrke. Jeg kan heller ikke tjekke, om \"Mute\" er slået til eller ej.
Avatar billede slowaterz Nybegynder
20. november 2001 - 12:46 #10
martinlind <<< hvordan styrer man \"Mute\" på lyd igennem Windows API ?
Avatar billede martinlind Nybegynder
20. november 2001 - 12:49 #11
Næ, ikke umidelbart, prøv at snus lidt rund i API hjælpen, så kan du sikkert finde det
Avatar billede pellelil Nybegynder
20. november 2001 - 12:49 #12
slowaterz> Der bliver jeg dig svar skyldig da jeg endnu har til gode at \"rode med lyd\" under Delphi, men prøv at kigge her: http://www.torry.net/mixer.htm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester