Oppure

Loading
12/05/11 18:00
Lafa_96
allora ho creato una sub con 4 parametri che poi dovrà essere inserita in un timer

il codice della sub è questo
 Private Sub progresso(ByVal m As Integer, ByVal c As Integer, ByVal v As Integer, ByVal d As Integer)
        m = d
        calcolo = m - (m - c)
        v = calcolo
    End Sub


e poi nel timer

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        progresso(ProgressBar1.Maximum, audio.CurrentPosition, ProgressBar1.Value, audio.Duration)
    End Sub


visto che non uso molto le sub con parametri qualcuno mi dice perchè il timer non fa quello che dovrebbe fare?
ah si, controllo è una variabile integer e "progresso" dovrebbe aggiornare continuamente la progressbar che indica lo stato della traccia in esecuzione!
aaa
12/05/11 18:48
noitide
sinceramente non ho ben capito cosa vorresti fare.. comunque dall'ultima tua frase '"progresso" dovrebbe aggiornare continuamente la progressbar che indica lo stato della traccia in esecuzione!' penso di capire che tu vorresti aggiornare la progressbar. ma come speri che questo avvenga se nella sub progresso non imposti il nuovo valore che essa deve assumere??
aaa
12/05/11 18:51
R0gerBlack
Innanzitutto perché la Sub (come uso dire io) è fine a se stessa, poi sono cieco io o manca il ProgressBar1.Value = .. che dovrebbe aggiornare lo stato della ProgressBar?
aaa
12/05/11 19:32
La prima Sub è totalmente priva di senso :om:
Ma sul serio, non ho mai visto una cosa così stupida (senza offesa!)

Esatto, senza aggiornare la properità Value la barra non si muove :_doubt:
12/05/11 21:34
walker93
tu ti confondi...
Credo che tu debba usare al posto di ByVal un parametro ByRef in questo modo non crei una seconda variabile con una diversa allocazione di memoria; ma, detto banalmente, sostituisci il nome della variabile passata in ingresso solo per la durata della subroutine ed eventuali valori che vai a scrivere in m ed in v sostituiscono il valore dei parametri passati in input:
      Private Sub progresso(ByRef m As Integer, ByVal c As Integer, ByRef v As Integer, ByVal d As Integer)
              m = d
              calcolo = m - (m - c)
              v = calcolo
          End Sub

aaa
13/05/11 15:50
Il Totem
ByRef non funzionerà. Infatti richiamare progressBar1.Value equivale a chiamare la funzione nascosta progressbar1.get_Value(), creata al momento della compilazione. Usando ByRef sul primo parametro stai passando per riferimento il risultato restituito dalla funzione, che è un valore temporaneo, cambiando il quale non influenzi in nessun modo il valore di Value.

La funzione scritta così non ha senso. Devi assegnare il valore direttamente alla proprietà. Ma dove hai imparato a scrivere funzioni del genere?
aaa