Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - spiegazione codice un pò complessino per me??
Forum - C# / VB.NET - spiegazione codice un pò complessino per me??

Avatar
Master_VB (Normal User)
Pro


Messaggi: 148
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 12:02
Martedì, 04/08/2009
Questo topic è stato chiuso dal moderatore

so che è chiedere un pò troppo ma vorrei spiegato questo codice:
Codice sorgente - presumibilmente VB.NET

  1. public Function ListaFiles(ByVal Cartella As String, ByVal Estensione As String) As String()
  2.         Dim i As Integer
  3.         Dim n As String
  4.         Dim f() As String = System.IO.Directory.GetFiles(Cartella, Estensione)
  5.         'restituisce un array contenente i nomi dei file con estensione escluso il percorso
  6.         For i = 0 To f.Length - 1
  7.             f(i) = f(i).Substring(f(i).LastIndexOf("\") + 1)
  8.         Next
  9.         'elimina l'estensione ai nomi dei file
  10.         For i = 0 To f.Length - 1
  11.             n = f(i).LastIndexOf(".")
  12.             'se minore di 0 vuol dire che c'è un file senza estensione
  13.             'senza ciclo condizionale restituisce un eccezione
  14.             If n > 0 Then
  15.                 'elimina i caratteri a partire dall'ultimo punto
  16.                 f(i) = f(i).Remove(n)
  17.             End If
  18.         Next
  19.         Return f
  20.     End Function



che toglie estensione e percorso a una lista di file ottenuti

e poi per usarlo ad esempio in una listbox usa questo codice:

Codice sorgente - presumibilmente Plain Text

  1. ListBox1.Items.AddRange(ListaFiles(percorso, "*.*"))



vorrei spiegato linea per linea il codice le funzioni tipo lenght substring e tutti quei "casini" parentesi in parentesi e com fa ad usarlo nella seconda parte del codice pernche non ci ho capito ma vorrei saperla fare io uan cosa così non chiedere i codici agli altri:pat:

se qualcuno ha questa immensa pazienza mi fa un favore ciao

PM
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 13:26
Martedì, 04/08/2009
Beh ... piuttosto che spiegare linea per linea un programma, ti consiglio di studiare il linguaggio da uno o piu' libri ... fidati ... e' il sistema giusto per imparare.

PM
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 14:15
Martedì, 04/08/2009
Si, ti conviene comprare un bel libro, comunque, ecco il codice commentato linea per linea:

Codice sorgente - presumibilmente VB.NET

  1. Public Function ListaFiles(ByVal Cartella As String, ByVal Estensione As String) As String()
  2.         Dim i As Integer 'Dichiara una variabile i di tipo Integer
  3.         Dim n As String 'Dichiara una variabile n di tipo Integer
  4.         Dim f() As String = System.IO.Directory.GetFiles(Cartella, Estensione)
  5.         'Dichiara un array di string e lo riempie con i nomi dei file contenuti in una cartella e con una determinata estensione grazie alla funzione System.IO.Directory.GetFiles
  6.  
  7.         For i = 0 To f.Length - 1 'Crea un ciclo che inizia con i=0 e viene ripetuto tante volte quanto è lunga la lista dei file(iniziando da 0 e non da 1 è necessario sottrarre 1 dalla lunghezza dell'array di files(Lenght indica la lunghezza di un array))
  8.  
  9.             f(i) = f(i).Substring(f(i).LastIndexOf("\") + 1)
  10.             'f(i) indica il nome del file corrente nell'array; la funzione substring ne taglia la parte iniziale fino alla posizione specificata, che in questo caso si ottiene grazie alla funzione LastIndexOf, che trova la posizione dell'ultimo carattere del tipo specificato(in questo caso \); aggiungendo 1 si salta anche quest'ultimo \ e si ottiene il solo nome del file.
  11.  
  12.  
  13.  
  14.         Next 'Qui termina il ciclo, se i < file.lenght incrementa i di 1 altrimenti termina il ciclo
  15.  
  16.  
  17.        
  18.         For i = 0 To f.Length - 1 'Un ciclo come prima
  19.  
  20.             n = f(i).LastIndexOf(".")
  21.             'come detto prima con la funzione LastIndexOf(".") si ottiene la posizione dell'ultimo carattere . che indica l'inizio dell'estensione del file
  22.  
  23.             'se minore di 0 vuol dire che c'è un file senza estensione
  24.             'perchè lastindexof restituisce -1 se non è presente il
  25.             'carattere cercato(.).
  26.             If n > 0 Then 'Controlla se n sia maggiore di 0. se non lo è(n < 0) significa che LastIndexOf non ha trovato nessun punto(.) e quindi nessuna estensione.
  27.  
  28.                 'elimina i caratteri a partire dall'ultimo punto
  29.                 f(i) = f(i).Remove(n)
  30.             End If
  31.         Next
  32.         Return f 'La funzione restituisce l'array f(la lista dei file
  33.     End Function


Ultima modifica effettuata da manvb.net il 04/08/2009 alle 14:16
PM
Avatar
Master_VB (Normal User)
Pro


Messaggi: 148
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 21:54
Mercoledì, 05/08/2009
ho un libro di vb.net di cesare rota (se non sbaglio) ma tutti quei concatenamenti per me sono difficili comunque grazie di aver commentato il codice ci ho capito....però da solo da 0 un codice del genre non riuscirei a scriverlo

PM
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 1:46
Giovedì, 06/08/2009
No, il codice non è affatto difficile(anzi si capisce abbastanza), il problema è che un libro non potra mai darti la capacità di leggere (e di conseguenza scrivere) scorrevolmente un sorgente, è un'abilità che si acquista col tempo, con l'esperienza.
Comunque se non conosci delle classi o funzioni leggi la spiegazione dell'intellisense.

PM
Avatar
Master_VB (Normal User)
Pro


Messaggi: 148
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 11:00
Giovedì, 06/08/2009
lo so l'esperienza...

PM