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>
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 ?
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 ?
procedure playwavestream(Stream : TMemoryStream); begin if Stream = nil then sndPlaySound(nil,SND_ASYNC) else sndPlaySound(Stream.Memory, (SND_ASYNC or SND_MEMORY)); end; </SNIP>
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>
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.
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
Synes godt om
Ny brugerNybegynder
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.