Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 23
  1. #11
    Utente bannato
    Registrato dal
    May 2011
    Messaggi
    35
    mi sembra un pò troppo complicato per me non ci capisco nulla non capisco neanche da dove iniziare

  2. #12
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da NuovoNomeUtente
    mi sembra un pò troppo complicato per me non ci capisco nulla non capisco neanche da dove iniziare
    Beh, non ho deciso io di scrivere un programma senza avere - probabilmente - tutte le conoscenze necessarie ...

    Comunque, qual è il codice *attuale* e completo che hai scritto per la lettura ciclica della lista con la visualizzazione della dimensione dei file e la percentuale di download?

    Codice che funzioni, almeno, per il primo download ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #13
    Utente bannato
    Registrato dal
    May 2011
    Messaggi
    35
    allora questo è il codice funzionante per il download:
    codice:
    Private Sub down_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles down.Click
            download = New WebClient
            Dim save As String
            save = urltxt.Text.Split("/"c)(urltxt.Text.Split("/"c).Length - 1)
            If urltxt.Text = "http://" Then
                MsgBox("Riempi l'url!!", MsgBoxStyle.Critical)
            Else
                download.DownloadFileAsync(New Uri(urltxt.Text), brwtxt.Text + save)
            End If
        End Sub
        Private Sub download_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles download.DownloadProgressChanged
            Dim dimensionitotali As String
            Dim dimensioniscaricate As String
            dimensionitotali = e.TotalBytesToReceive / 1048576
            dimensioniscaricate = e.BytesReceived / 1048576
            dimen.Text = FormatNumber(dimensionitotali, 2) + " MB / " + FormatNumber(dimensioniscaricate, 2) + " MB"
            ProgressBar1.Value = e.ProgressPercentage
            perc.Text = ProgressBar1.Value
        End Sub
        Private Sub brw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles brw.Click
            Dim salvaree As New SaveFileDialog
            salvaree.Title = "Salva in.."
            salvaree.ShowDialog()
            brwtxt.Text = salvaree.FileName
        End Sub
    non pensavo fosse così complicato :S

  4. #14
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dato che siamo all'interno dello stesso thread, non utilizzare il mio suggerimento precedente ... magari lo userai quando farai una versione multithread.

    Adesso ti basta utilizzare la

    codice:
    Imports System.Threading
    e dichiarare una variabile nella classe

    codice:
    Private flDow As Boolean
    Poi, subito prima del DownloadFileAsync scrivi

    codice:
    flDow = True
    e subito dopo

    codice:
       While flDow
          Application.DoEvents()
          Thread.CurrentThread.Sleep(20)
       End While
    Infine, dovrai utilizzare l'evento download_DownloadFileCompleted, in cui scriverai

    codice:
    flDow = False
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #15
    Utente bannato
    Registrato dal
    May 2011
    Messaggi
    35
    ok grazie
    adesso funziona però non capisco come fare a spostare la selezione dentro la listbox

    cioè:
    codice:
    ab = ListBox1.SelectedItem <-- così mi scarica solo il primo file e appena finisce mi continua a scaricare quello
    ab = ListBox1.SelectedItem(numX) <-- così mi da che l'URL non è giusto e si blocca tutto
    
    questo è tutto il codice:
       Private Sub down_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles down.Click
            download = New WebClient
            Dim save As String
            Dim ab As String
            save = ListBox1.Text.Split("/"c)(ListBox1.Text.Split("/"c).Length - 1)
            If urltxt.Text = "http://" Then
                MsgBox("Riempi l'url!!", MsgBoxStyle.Critical)
            Else
                For numX = 1 To ListBox1.Items.Count()
                    ab = ListBox1.SelectedItem
                    flDow = True
                    download.DownloadFileAsync(New Uri(ab), brwtxt.Text + save)
                    While flDow
                        Application.DoEvents()
                        Thread.Sleep(20)
                    End While
                Next
            End If
        End Sub
    Ho provato pure con ListBox1.Select ma non funziona

  6. #16
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Questo è un altro problema che dovresti spiegare meglio ...

    Come sono inseriti i dati che ti servono nella Listbox?

    A che serve la Split ?

    Cosa è urltxt ?

    A cosa serve save?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #17
    Utente bannato
    Registrato dal
    May 2011
    Messaggi
    35
    Ci sono riuscito
    il problema è che far partire i download devo premere 2 volte su download e non capisco perchè o_o"
    save è il "nome del file con l'estensione" lo split ecc servono per andarlo a prendere direttamente da l'url che sta scaricando, mentre urltxt è il come della textbox in cui inserisci l'url che poi va aggiunto alla listbox!

    codice:
        Private Sub down_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles down.Click
            download = New WebClient
            Dim save As String
            Dim menouno As String
            save = ListBox1.Text.Split("/"c)(ListBox1.Text.Split("/"c).Length - 1)
            If urltxt.Text = "http://" Then
                MsgBox("Riempi l'url!!", MsgBoxStyle.Critical)
            Else
                For numX = 1 To ListBox1.Items.Count()
                    menouno = (numX - 1)
                    ListBox1.SetSelected(menouno, True)
                    flDow = True
                    download.DownloadFileAsync(New Uri(ListBox1.SelectedItem), brwtxt.Text + save)
                    While flDow
                        Application.DoEvents()
                        Thread.Sleep(20)
                    End While
                Next
            End If
        End Sub
    l'unica cosa adesso è che non capisco perchè devo premere 2 volte il tasto download prima che parti a scaricare .____.

    EDIT: per visualizzare la velocità di download che operazione devo fare?
    DownloadFileAsync non ha la possibilità di visualizzarla..ho a disposizione i byte che scarica e i byte totali del file..

  8. #18
    Utente bannato
    Registrato dal
    May 2011
    Messaggi
    35
    Scusate il doppio post ma non mi fa editare

    dunque sono riuscito a capire come contare la velocità di download, ma va in conflitto con
    codice:
                    While flDow
                        Application.DoEvents()
                        Thread.Sleep(20)
                    End While
    e non ne capisco il motivo, qui c'è il pezzo di codice che conta i secondi:
    codice:
    Private Sub download_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles download.DownloadProgressChanged
            Dim dimensionitotali As String
            Dim dimensioniscaricate As String
            Dim temposs As String
            Timer1.Start()
            temposs = Label5.Text
            Dim bytericevuti As Long = e.BytesReceived
            Dim kbz As Double = bytericevuti / (temposs * 1024)
            dimensionitotali = e.TotalBytesToReceive / 1048576
            dimensioniscaricate = e.BytesReceived / 1048576
            dimen.Text = FormatNumber(dimensionitotali, 2) + " MB / " + FormatNumber(dimensioniscaricate, 2) + " MB"
            ProgressBar1.Value = e.ProgressPercentage
            perc.Text = ProgressBar1.Value
            Label6.Text = kbz + "KB/s"
        End Sub
    ho messo un timer impostato a 1000..dovrebbe funzionare ma va in conflitto con Application.DoEvents() come posso risolvere????

  9. #19
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da NuovoNomeUtente
    l'unica cosa adesso è che non capisco perchè devo premere 2 volte il tasto download prima che parti a scaricare .____.
    Guarda, non è facile risponderti .... se spiegherai meglio (ma molto meglio di come hai fatto) a cosa servono tutti gli elementi del programma, forse si può azzardare una risposta ...

    per visualizzare la velocità di download che operazione devo fare?
    DownloadFileAsync non ha la possibilità di visualizzarla..ho a disposizione i byte che scarica e i byte totali del file..
    Questa informazione non c'è. Devi calcolarla tu.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #20
    Utente bannato
    Registrato dal
    May 2011
    Messaggi
    35
    il fatto del premere 2 volte il tasto per scaricare non è un problema piu' che altro perchè ne è insorto un altro, visual basic da come errore questa parte di codice:
    codice:
                    While flDow
                        Application.DoEvents()
                        Thread.Sleep(20)
                    End While
    non riesco a capire il motivo, è da quanto ho aggiunto la velocità di download qui c'è il pezzo di codice:
    codice:
    Private Sub download_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles download.DownloadProgressChanged
            Dim dimensionitotali As String
            Dim dimensioniscaricate As String
            Dim temposs As String
            Timer1.Start()
            temposs = Label5.Text
            Dim bytericevuti As Long = e.BytesReceived
            Dim kbz As Double = bytericevuti / (temposs * 1024)
            dimensionitotali = e.TotalBytesToReceive / 1048576
            dimensioniscaricate = e.BytesReceived / 1048576
            dimen.Text = FormatNumber(dimensionitotali, 2) + " MB / " + FormatNumber(dimensioniscaricate, 2) + " MB"
            ProgressBar1.Value = e.ProgressPercentage
            perc.Text = ProgressBar1.Value
            Label6.Text = kbz + "KB/s"
        End Sub
    non c'è molto da spiegare, c'è un timer che conta i secondi e parte quando partono i download poi c'è l'operazione per ricavare la velocità che è i bytes ricevuti diviso il tempo che è trascorso moltiplicato per 1024

    la velocità dovrebbe comparire in un label che ho messo, come già detto va in conflitto con la parte di codice che mi avevi suggerito te e che funzionava fino a prima di aver inserito queste ultime cose..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.