Avatar billede Danishmo Nybegynder
06. april 2009 - 14:10 Der er 6 kommentarer og
1 løsning

Afspilning af lydfiler

Hej

Jeg sidder og laver et lille program, som skal afspille forskellige lydfiler alt efter, de input der kommer.
Jeg kan dog ikke få det til at virke således, at det kan være mange forskellige lydfiler der afspilles.
Koden ser således ud:

Private Sub playSound(ByVal sound As String)
        sound = "My.Resources." + sound
        My.Computer.Audio.Play(sound, AudioPlayMode.WaitToComplete)
    End Sub


Jeg kan fint få det til at fungere, hvis jeg laver en fast værdi i stedet for denne der er afhængig af den String variabel der kommer ind.

Håber meget der er nogen der har nogle gode idéer til hvordan jeg kan få dette til at fungere efter hensigten.

Med venlig hilsen
Jari
Avatar billede tjacob Juniormester
06. april 2009 - 16:20 #1
Det er sikkert fordi du inputter sound ByVal. Det betyder jo at variablen IKKE må ændres.

Enten skal du lave en ny variabel i sub'en:
Dim NewSound as String = "My.Resources." & sound

Eller du skal inputte ByRef.
Avatar billede Danishmo Nybegynder
06. april 2009 - 16:31 #2
Hej tjacob

Tak for dit indlæg, desværre har jeg prøvet begge dele. Det jeg får når jeg kører programmet er en Exception.InnerException.
Jeg har på fornemmelsen, at det der ikke bliver accepteret er henvisningen "My.Resources.", dette henviser til nogle af de resources der er tilknyttet programmet.
Er der evt. en anden måde at henvise til resourcer på?

Med venlig hilsen
Jari
Avatar billede tjacob Juniormester
07. april 2009 - 08:44 #3
Ja, fejlen er at du skal angive en placering på disken som en string.
Du kan ikke tilgå en klasse ved at samle en String på denne måde.

Jeg formoder at du i My.Ressources har strings der angiver placeringer af lydfilerne?
Så kunne du lave noget a la:

Dim NewSound as String
Select case sound
    Case "Sang1"
        NewSound = My.Ressources.Sang1
    Case "Sang2"
        NewSound = My.Ressources.Sang2
    osv
End Select
Avatar billede Danishmo Nybegynder
07. april 2009 - 13:10 #4
Ja, jeg har før brugt den metode med case's, men jeg håbede det var muligt at lave en metode som ikke var afhængig af at jeg skrev hver enkel lydspor ind, således at jeg kunne tilføje flere lydspor uden at skulle til at ændre i koden, men det er måske ikke muligt?
Avatar billede tjacob Juniormester
07. april 2009 - 15:52 #5
Så måske med:

Dim NewSound as String = My.Resources.ResourceManager.GetString(sound)
Avatar billede Danishmo Nybegynder
07. april 2009 - 17:41 #6
Det virkede heller ikke. Problemet er at "sound" jo bare er en String der bliver sendt til funktionen.
Baggrunden for at jeg forsøger at lave en String der hedder "My.Resources.", er at funktionen My.Computer.Audio.Play() virker, hvis jeg laver en direkte henvisning til lydene i min resources således her:
My.Computer.Audio.Play(My.Resources.Fugl, AudioPlayMode.WaitToComplete)
Hvor Fugl.wav er en fil der er tilføjet som resource til programmet.
Avatar billede Danishmo Nybegynder
19. april 2009 - 22:31 #7
Nå jeg forsøger mig med at bruge dynamisk sti i stedet for. Mange tak for din hjælp tjacob!
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