Hej! tja du kan göra på några olika sätt.... Här kommer tre exempel på hur du kan göra: Wow, det gick fort! TACK! Hit kommer jag tillbaks! Nu ska vi se om jag får det att funka...:) Hej igen! Const anger att det är en konstant värde. Tillåter inte funktions anrop i uttrycket. Det gick inte... Den protesterar nu över den sista raden. :( Hej. Nej, nej, den koden är med. Det funkar alltså när jag använder Ledsen att jag inte testade exemplet. Funktionen jag skrev för att retunera en katalog med wave filer, antar att sökvägen är avslutad med ett backslash.Slumpa fram ljudfiler
Jag är ny på forumet och ny på VB. Kommer nog att ställa en del "dumma" frågor. Hoppas att det är okej och att det inte bara är proffs här... :)
Jag vill ha en kommandoknapp som slumpar fram en wav-fil. Jag har lyckats ladda EN wav-fil med klick, men jag vet inte hur jag ska få programmet att slumpa fram ett av t ex 10 wav-filer...
Tacksam för hjälp.
Mvh KatarinaSv: Slumpa fram ljudfiler
Ett är....
Option Explicit
Private Sub Command1_Click()
Randomize Timer 'Set randomSeed
Select Case (Int(10 * Rnd) + 1)
Case 1
'kod här för att spela wavfil 1
Case 2
'kod här för att spela wavfil 2
Case 3
'kod här för att spela wavfil 3
Case 4
'kod här för att spela wavfil 4
Case 5
'kod här för att spela wavfil 5
Case 6
'kod här för att spela wavfil 6
Case 7
'kod här för att spela wavfil 7
Case 8
'kod här för att spela wavfil 8
Case 9
'kod här för att spela wavfil 9
Case 10
'kod här för att spela wavfil 10
End Select
End Sub
============================================
Följande xempel skulle nog jag välja !
============================================
Option Explicit
Private Sub Command1_Click()
Dim wavFileName As String
Randomize Timer 'Set randomSeed
'istället för path skriver du sökväg till ljudfilerna
'exvis "C:\ljudfiler\" Exemplet nedan funkar bara om
'dina ljudfiler heter wav1.wav till wav10.wav Annars
'Måste du ändra i koden.
wavFileName = "path" & "wav" & CStr(Int(10 * Rnd) + 1) & ".wav"
'Nu har du i strängen wavFileName fullständig path och
'filnamn som du kan använda för att spela din ljudfil.
End Sub
lycka Till.
/peterhSv: Slumpa fram ljudfiler
* Skapa tre CommandButtons
* Klistra in följande kod i formuläret
Option Explicit
Private Const SND_ASYNC = &H1
Private Const SND_FILENAME = &H20000
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Sub Command1_Click()
Dim FileNo As Integer
Randomize
FileNo = Int(9 * Rnd)
PlayWave "c:\File" & FileNo & ".wav"
End Sub
Private Sub Command2_Click()
Randomize
Select Case Int(9 * Rnd)
Case 0
PlayWave "c:\FileA.wav"
Case 1
PlayWave "c:\FileB.wav"
Case 2
PlayWave "c:\FileC.wav"
Case 3
PlayWave "c:\FileD.wav"
Case 4
PlayWave "c:\FileE.wav"
Case 5
PlayWave "c:\FileF.wav"
Case 6
PlayWave "c:\FileG.wav"
Case 7
PlayWave "c:\FileH.wav"
Case 8
PlayWave "c:\FileI.wav"
Case 9
PlayWave "c:\FileJ.wav"
End Select
End Sub
Private Sub Command3_Click()
Dim Files As Collection
Dim FileNo As Integer
Const Path = "C:\WINNT\Media\"
Randomize
Set Files = GetDir(Path & "*.Wav")
FileNo = Int(Files.Count * Rnd) + 1
PlayWave Path & Files(FileNo)
End Sub
Public Sub PlayWave(Filename As String)
Dim lReturn As Long
lReturn = PlaySound(Filename, 0&, SND_FILENAME Or SND_ASYNC)
End Sub
Public Function GetDir(Path As String) As Collection
Dim Filename As String
Set GetDir = New Collection
Filename = Dir(Path)
Do While Len(Filename)
GetDir.Add Filename
Filename = Dir
Loop
End FunctionSv: Slumpa fram ljudfiler
KattisMer hjälp!
Kul, det funkar! Jag är jättetacksam. (Nu kommer ni aldrig att bli av med mej...:)
Hur som helst. Jag använder alternativ tre som Andreas skrev. Nu undrar jag vad man skriver för att inte anropa filerna på hårddisken utan i en undermapp till projektmappen.
Jag provade med
Const Path = App.Path & ("\ljudfiler")
och lite varianter på det, som man gör med bilder, men det funkade ju inte.
Antar att det är ganska simpelt. Jag sa ju att jag var nybörjade! :)Sv: Mer hjälp!
Testa med:
Dim Path as string
Path = App.Path & "\ljudfiler"Funkade inte...
Private Sub Command1_Click()
Dim Files As Collection
Dim FileNo As Integer
Dim Path As String
Path = App.Path & "\ljudfiler"
Randomize
Set Files = GetDir(Path & "*.Wav")
FileNo = Int(Files.Count * Rnd) + 1
PlayWave Path & Files(FileNo)
End SubSv: Funkade inte...
Du har glömt följande kod som Andreas hade med:
Public Sub PlayWave(Filename As String)
Dim lReturn As Long
lReturn = PlaySound(Filename, 0&, SND_FILENAME Or SND_ASYNC)
End Sub
Public Function GetDir(Path As String) As Collection
Dim Filename As String
Set GetDir = New Collection
Filename = Dir(Path)
Do While Len(Filename)
GetDir.Add Filename
Filename = Dir
Loop
End Function
Klistra in den så kommer det nog att fungera.
/StefanSv: Funkade inte...
Const Path = "c:\bla\bla\"
Men inte med
Dim Path As String
Path = App.Path & "\ljudfiler"
Jag tog bara med den kodsnutt där felet låg.Sv: Funkade inte...
I konstanten är det ett avslutande backslash:
Const Path = "c:\bla\bla<B>\</B>"
Men inte efter ljudfiler:
Dim Path As String
Path = App.Path & "\ljudfiler"
Skall alltså se ut något såhär:
Dim Path As String
Path = App.Path & "\ljudfiler<B>\</B>"
Eller så kan man lägga till en kontroll i funktionen...