• 9 odgovora
  • 4.073 pregleda
Mp3-Player 04.10.2003. u 17:24 · pre 280 meseci #1
Napravio sam mp3 player.

Kada ga prvi put pokrenem nakon paljena kompa,sve mi radi ali kad
ga pokrenem 2 put javlja mi ovo


:Run time error '380':
invalid property valute


zašto to!

kako da napravim kada pjesma završi da prebaci na drugu
Potpis
__________________________
YO!
Re: Mp3-Player 04.10.2003. u 17:39 · pre 280 meseci #2
kad bi postovao kod gde se javlja greska i koje objekte koristis mozda bi neko mogao da ti pomogne
Potpis
Blue Man Group
Re: Mp3-Player 05.10.2003. u 16:37 · pre 280 meseci #4
Nemoj se ljutiti, ali kod ti je uzasno necitak. Nista nije nazubljeno, nazivi kontrola i promeljivih su uzasni. Pogledaj u MSDNu naming conventions ili nadji na netu Leszinsky convention.

Druga stvar, ne koristis kako treba On Error GoTo. Evo primera iz tvog koda:
Code:

Private Sub Form_Load()
Dim sfile, a As String

    plays = "stop"
    sloop = "False"
    Slider2.Value = 2500
    sfile = App.Path + "\" + "default.mpl"
    
    On Error GoTo serr
    
    Open sfile For Input As #1
    
    Do Until EOF(1)
        Input #1, a$
        List1.AddItem a$
    Loop
    
    Close #1
serr:
    Close #1
End Sub


Kod tebe ce se serr labela izvrsiti i ako je bilo greske i ako nije. Ovo bi trebalo da izgleda ovako

Code:

Private Sub Form_Load()
Dim sfile, a As String

    plays = "stop"
    sloop = "False"
    Slider2.Value = 2500
    sfile = App.Path + "\" + "default.mpl"
    
    On Error GoTo serr
    
    Open sfile For Input As #1
    
    Do Until EOF(1)
        Input #1, a$
        List1.AddItem a$
    Loop
    
    Close #1
    
    Exit Sub ' nije bilo greske, izadji iz procedure/funkcije
    
serr:
    Close #1
End Sub


Toliko o primedbama. Jos jednom, nemoj se ljutiti zbog ovoga, ovo su dobronamerne sugestije.

Elem, tvoj problem se javlja kad zatvoris aplikaciju (bar kod mene), zato sto setujes Slider1 kontroli Max property na 0 i to je taj Invalid property value. Problem je kod koji se nalazi na Form_Unload

Code:

Private Sub Form_Unload(Cancel As Integer)
Dim sfile As String
Dim i As Long

    sfile = App.Path + "\" + "default.mpl"
    On Error GoTo error
    Open sfile For Output As #1
    For i = 0 To 100
        List1.ListIndex = i
        Write #1, List1.Text
    Next i
    
error:
    Close #1
End Sub


Problem je linija List1.ListIndex = i. Kad se ovo izvrsi okida se event List1_Click i izvrsava se taj kod tamo, a tamo setujes Slider.Max1 na nulu, a to je i Min vrednost

Evo jedno quick and dirty resenje. Na pocetku koda za formu dodaj ovo:
Code:

Private m_SavingToFile As Boolean


Form_Unload treba da ti izgleda ovako:
Code:

Private Sub Form_Unload(Cancel As Integer)
Dim sfile As String
Dim i As Long

    sfile = App.Path + "\" + "default.mpl"

    On Error GoTo error

    m_SavingToFile = True

    Open sfile For Output As #1
    For i = 0 To 100
        List1.ListIndex = i
        Write #1, List1.Text
    Next i
    
proc_exit:
    Close #1
    m_SavingToFile = False
    Exit Sub
error:
    Resume proc_exit
End Sub


Na pocetak List1_Click() dodaj ovu liniju:
Code:

If m_SavingToFile Then Exit Sub


Znaci List1_Click() se nece izvrsavati ako je u toku pisanje u fajl, i nece doci do setovanja Slider1.Max na 0.

Drugi jednostavniji nacin je da ides kroz listbox na sledeci nacin

Code:

    For i = 0 To List1.ListCount - 1
        Debug.Print List1.List(i)
    Next


onda ti se nece okidati Click event
Potpis
Blue Man Group
Re: Mp3-Player 05.10.2003. u 18:14 · pre 280 meseci #5
Radi!!

Još samo kako da mi nakon završetka pjesme prebaci na slijedeću?

HVALA TI!!!!!!!
Potpis
__________________________
YO!
Re: Mp3-Player 06.10.2003. u 10:17 · pre 280 meseci #6
MediaPlayer kontrola dize event EndOfStream kad zavrsi pesmu.

Znaci, ovaj tvoj (nenazubljeni :)) kod:
Code:

Private Sub Play_EndOfStream(ByVal Result As Long)
If Rep.BackColor = &HFF& Then
Exit Sub
Else: Play.Play
End If
End Sub


zameni sa:

Code:

Private Sub Play_EndOfStream(ByVal Result As Long)
    'deselektuj pesmu koja je upravo zavrsena
    List1.Selected(List1.ListIndex) = False
    
    If List1.ListIndex = List1.ListCount - 1 Then
        ' zavrsena je poslednja pesma iz liste, ispitaj repeat
        If Rep.BackColor = &HFF& Then
            Exit Sub
        Else
            List1.ListIndex = 0
            'Play.Play
        End If
    Else
        ' zavrsena je pesma koja nije poslednja, predji na sledecu
        List1.ListIndex = List1.ListIndex + 1
    End If
    
    ' selektuj pesmu u listi koja trenutno ide
    List1.Selected(List1.ListIndex) = True
End Sub
Potpis
Blue Man Group
Re: Mp3-Player 08.10.2003. u 13:20 · pre 280 meseci #7
On prebaci na drugo pjesmu u listi ,ali na prethodnu iako nije zadnja u listi
Potpis
__________________________
YO!
Re: Mp3-Player 08.10.2003. u 13:35 · pre 280 meseci #8
Je l mozes malo da pojasnis sta se desava i da postujes kod?
Potpis
Blue Man Group
Re: Mp3-Player 08.10.2003. u 13:51 · pre 280 meseci #9
Private Sub Play_EndOfStream(ByVal Result As Long)
'deselektuj pesmu koja je upravo zavrsena
List1.Selected(List1.ListIndex) = False

If List1.ListIndex = List1.ListCount - 1 Then
' zavrsena je poslednja pesma iz liste, ispitaj repeat
If Rep.BackColor = &HFF& Then
Exit Sub
Else
List1.ListIndex = 0
'Play.Play
End If
Else
' zavrsena je pesma koja nije poslednja, predji na sledecu
List1.ListIndex = List1.ListIndex + 1
End If

' selektuj pesmu u listi koja trenutno ide
List1.Selected(List1.ListIndex) = True
End Sub
____________

Nejavlja se nikakvi error.
Kada pijesma završio vb bi trebao bi prebaciti na slijedeću pjesmu,ali
on prebaci na prethodnu.

Potpis
__________________________
YO!
Re: Mp3-Player 08.10.2003. u 14:22 · pre 280 meseci #10
Kod mene prebaci na sledecu. Debuguj, stavi break pointe pa vidi sta se desava.
Kod ti nije najsjanjiji. Trebalo bi sto manje da cackas ListBox kontrolu i da izbegavas stvari tipa:
Code:

List1.ListIndex = nesto


Ovde ti se stalno okidaju eventi, a ti ih handleujes i kad treba i kad ne treba. Uvedi promenljivu m_CurrentSong as Integer na nivou forme, napravi funkciju PlaySong koja prima kao parametar m_CurrentSong ili ne mora da ima prametar, koja pusta m_CurrentSong, i samo u toj funkciji setuj List1.ListIndex na neku vrednost. Kad treba da se predje na sledecu/prethodnu pesmu, azuriraj promenljivu m_CurrentSong i pozovi PlaySong funkciju.

Ja sad zaista nemam vremena da debugujem ovaj kod. Napravi ove izmene odozgo bice ti lakse da debugujes, debuguj pa vidi sta se desava.
Potpis
Blue Man Group
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme