Pagina 2 di 5 primaprima 1 2 3 4 ... ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 41

Hybrid View

  1. #1
    UP

  2. #2
    Ciò che mi è venuto in mente a primo impatto è:

    codice:
    Function RecursiveFilesCount(ByVal d As System.IO.DirectoryInfo) As List(Of String)  Dim l As New List(of String)
      For Each fileX As IO.FileInfo In d.GetFiles("*.*", IO.SearchOption.TopDirectoryOnly)
        l.add(New String(filex.FullName.ToString))
      Next
      For Each dir As IO.DirectoryInfo In d.GetDirectories
    
        Try
          l += RecursiveFilesCount(dir) 'Mi sa che non posso aggiungere elementi cosi alla lista però provo e correggerò :D
        Catch ex As UnauthorizedAccessException
        End Try
      Next
      Return l...
    End Function
    Non ho ancora fatto le prove ma dovrebbe andare giusto??

    Poi creo un'altro "for each" dove dico che per ogni elemento stringa presente nella lista "l" provo ad eliminare il file... cioè:
    codice:
    For Each delfile As String In l.length
      Try
        System.Io.File.Delete(delfile.ToString)
        ProgressBarX.Value = ProgressBarX.Value + 1
      Catch Ex as Exteption
        Console.WriteLine(Ex.Message)
      End Try
    Next
    NB: Ovviamente il valore di ProgressBar.Maximum lo ricavo alla fine della funzione contanto gli elementi contenuti nella lista "l"

  3. #3
    L'idea è corretta, ma non è necessario restituire la lista e fare tutti quei merge di liste: semplicemente passa sempre la stessa lista come parametro e aggiungici via via i dati.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    non è necessario restituire la lista e fare tutti quei merge di liste: semplicemente passa sempre la stessa lista come parametro e aggiungici via via i dati.
    Non capisco cosa intendi

  5. #5
    codice:
    Sub InternalGetFilesList(ByVal d As System.IO.DirectoryInfo, l As List(Of String))
        For Each fileX As IO.FileInfo In d.GetFiles("*.*", IO.SearchOption.TopDirectoryOnly)
            l.add(New String(filex.FullName.ToString))
        Next
        For Each dir As IO.DirectoryInfo In d.GetDirectories
            
            Try
                InternalGetFilesList(dir, l)
            Catch ex As UnauthorizedAccessException
            End Try
        Next
    End Sub
    
    Function GetFilesList(ByVal d As System.IO.DirectoryInfo) As List(Of String)
        Dim l As New List(Of String)
        InternalGetFilesList(d, l)
        return l
    End Function
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    codice:
    Sub InternalGetFilesList(ByVal d As System.IO.DirectoryInfo, l As List(Of String))
        For Each fileX As IO.FileInfo In d.GetFiles("*.*", IO.SearchOption.TopDirectoryOnly)
            l.add(New String(filex.FullName.ToString))
        Next
        For Each dir As IO.DirectoryInfo In d.GetDirectories
            Try
                InternalGetFilesList(dir, l)
            Catch ex As UnauthorizedAccessException
            End Try
        Next
    End Sub
    
    Function GetFilesList(ByVal d As System.IO.DirectoryInfo) As List(Of String)
        Dim l As New List(Of String)
        InternalGetFilesList(d, l)
        return l
    End Function

    Quindi il maximum della progress lo prendo da "GetFilesList(filepath)" e il io.file.delete(filename) lo metto in un'altra funzione
    Corretto?
    codice:
    dim diir as new io.directoryinfo = "c:\prova\"
    progressbarx.maximum = GetFilesList(diir)
    for each fileN as string in l
      io.file.delete(fileN)
      progressbar.value += 1
    next
    Se ho sbagliato dimmi dove, voglio provare a risolvere da solo

  7. #7
    GetFilesList ti restituisce la lista dei file da cancellare, non il numero di file...
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    codice:
    dim diir as new io.directoryinfo ="c:\prova\"progressbarx.maximum = GetFilesList(diir).count
    for each fileN as string in l
      io.file.delete(fileN)
      progressbar.value += 1
    next


    Il resto è tutto ok?

  9. #9
    None... nel tuo codice l non esiste, è una variabile locale GetFilesList e a InternalGetFileList! Devi dichiarare una List(Of String) nella tua funzione, assegnarci quello che restituisce GetFilesList e quindi usarlo per la progressbar e per eliminare i file.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    None... nel tuo codice l non esiste, è una variabile locale GetFilesList e a InternalGetFileList! Devi dichiarare una List(Of String) nella tua funzione, assegnarci quello che restituisce GetFilesList e quindi usarlo per la progressbar e per eliminare i file.
    Se invece l la dichiaro come public?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.