Autore Topic: cambio di indice inaspettato  (Letto 695 volte)

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
cambio di indice inaspettato
« il: 20 Gennaio 2010, 12:33:18 »
mi trovo difronte al solito problema che ti fa perdere una giornata e poi alla fine sarà una cavolata!!

mi sono accorto che nel mio player c'era un problema e cioè che quando avvio il programma ed è già caricata una playlist, o ne carico una, quando premo play invece di partire la riproduzione del primo elemento mi si apriva la finestra di dialogo per importare un file!
bene a questo ho già posto rimedio solo che quando premo play invece di riprodurre la prima canzone nella playlist mi riproduce la seconda!!
tramite delle print ho provato a guardare il valore di listbox1.index e inizialmente è a 0 ma poi va direttamente a 1 e le funzioni che vengono richiamate non incrementano l'indice mai!!

a questo punto qualcuno è in grado di darmi l'ispirazione? :-D
la funzione incrimata è questa
Codice: [Seleziona]
PUBLIC SUB Play_Click()
  'se STOPS = TRUE il pulsante play lo uso per importare un file
  'se la playlist è vuota importo comunque una canzone altrimenti quando premo play faccio partire la prima canzone della playlist
  IF ListBox1.List.Count = 0 THEN
    Menu1_Click
  'può iniziare la riproduzione e il timer può partire
  ELSE
    timMusic.Delay = 1000
    timMusic.Start
    PRINT "prima if: " & ListBox1.Index
    IF ListBox1.Index = -1 THEN
      ListBox1.Index = 0
    ENDIF
    PRINT "dopo if: " & ListBox1.Index
    'salvo l'indice della canzone attuale per evitare che venga modificato
    index = ListBox1.Index
    PRINT "index: " & index
    function.calculate_length(ListBox1.Text)
    PRINT "prima music.play: " & ListBox1.Index
    Music.Play
  ENDIF
END

e la funzione calculate_length è la seguente
Codice: [Seleziona]
PUBLIC SUB calculate_length(audio AS String)
  DIM length, sini AS String
  DIM sx AS Integer
  'calcolo la durata della canzone e setto lo slider
  SHELL "mplayer -ao null -ss 24:00:00 -really-quiet -identify " &
      Quote.Shell(audio) & " 2>&1 | grep ID_LENGTH | cut -f2 -d=" WAIT TO length
  sini = Left(length, InStr(length, ".") - 1)
  sx = Val(sini)
  sx = sx + 1
  FMain.sldPos.MaxValue = sx
END


chiedo scusa se non vi ho postato direttamente i sorgenti ma quando provo a farlo mi compare un messaggio che mi avverte che è stato rilevato un tentativo di attacco... suppongo sia un bug del vostro CMS
il mio progetto -> SITO

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: cambio di indice inaspettato
« Risposta #1 il: 20 Gennaio 2010, 13:32:32 »
quasi sicuramente il problema è in un altra parte di codice in cui qualche funzione aumenta il valore dell' indice , forse nella funzione timer

Offline luca1202

  • Gambero
  • **
  • Post: 95
    • Mostra profilo
    • http://luca1202.wordpress.com
Re: cambio di indice inaspettato
« Risposta #2 il: 22 Gennaio 2010, 23:24:02 »
si effettivamente il problema è all'interno della funzione timer!!
solo che non riesco a risolvere questa cosa!!

il problema è che nel timer gestisco il caso in cui music.pos sia uguale a 0 e di conseguenza riproduco la canzone dopo, ho provato a risolvere la cosa mettendo un variabile boolean ma quando provo ad inserirla e premo play non riproduce niente!!
faccio fatica a spiegarvelo vi allego il file con i sorgenti, la variabile si chiama first_execution, il controllo si trova nella funzione del timer e la modifica del valore è nel modulo function e nella funzione play_song.

aiuto non sò come uscirne! :'(
il mio progetto -> SITO