Oppure

Loading
26/11/19 9:03
xamm
Buongiorno a tutti,

ciao nessuno, non l'ho capito neanche io ma non faccio testo in quanto zappa³ con il codice; comunque ho verificato e ho installato il NET.Framework 4.7

Ciao MiRE, ho sostituito la ("\192.XXX.XX.X\X\XXXXX\XXXXXXX\", "*.txt";)
con GetFiles(folder.SelectedPath,"*.txt";)
nel seguente modo:

'Ottengo tutti i file di tipo txt
Dim files As String() = GetFiles(folder.SelectedPath, "*.txt";)

'prendo il primo file txt che trova
Dim nomefile As String = files(0)

'Conto le linee
Dim lines As String() = File.ReadAllLines("\192.XXX.XX.X\X\XXXXX\XXXXXXX\" & nomefile)

'Stampo il numero di linee
Console.WriteLine("Linee: {0}", lines.Length)

e mi dice che il Nome GetFiles non è dichiarato :hail:

Concettualmente non capisco un'altra cosa sicuramente banale.

Con il GetFiles(folder.SelectedPath, "*.txt";) dovrei prendere tutti i file .txt contenuti nella cartella che seleziono io a manina, ok ?
Quando conto le linee dell'unico txt trovato nella cartella selezionata con File.ReadAllLines("\192.XXX.XX.X\X\XXXXX\XXXXXXX\" & nomefile), non dovrei sostituire \192.XXX.XX.X\X\XXXXX\XXXXXXX\ con la folder.SelectedPath ?

Grazie veramente a tutti per la disponibilità e la pazienza e comunque mi devo mettere a studiare seriamente come già mi avete suggerito.

Buona giornata

Massimo
aaa
26/11/19 9:19
nessuno
Postato originariamente da xamm:

ciao nessuno, non l'ho capito neanche io


La questione non è questa. Non capisco perché non utilizzi quella linea che funziona regolarmente su tutti i sistemi.

Va beh ... lasciamo perdere ...

Per la GetFiles devi fare l'import di

System.IO.Directory
Ultima modifica effettuata da nessuno 26/11/19 9:30
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
26/11/19 10:08
Thejuster
Postato originariamente da xamm:

Buongiorno a tutti,

ciao nessuno, non l'ho capito neanche io ma non faccio testo in quanto zappa³ con il codice; comunque ho verificato e ho installato il NET.Framework 4.7

Ciao MiRE, ho sostituito la ("\192.XXX.XX.X\X\XXXXX\XXXXXXX\", "*.txt";)
con GetFiles(folder.SelectedPath,"*.txt";)
nel seguente modo:

 'Ottengo tutti i file di tipo txt
        Dim files As String() = GetFiles(folder.SelectedPath, "*.txt")

        'prendo il primo file txt che trova
        Dim nomefile As String = files(0)

        'Conto le linee
        Dim lines As String() = File.ReadAllLines("\192.XXX.XX.X\X\XXXXX\XXXXXXX\" & nomefile)

        'Stampo il numero di linee
        Console.WriteLine("Linee: {0}", lines.Length)



e mi dice che il Nome GetFiles non è dichiarato :hail:

Concettualmente non capisco un'altra cosa sicuramente banale.

Con il GetFiles(folder.SelectedPath, "*.txt";) dovrei prendere tutti i file .txt contenuti nella cartella che seleziono io a manina, ok ?
Quando conto le linee dell'unico txt trovato nella cartella selezionata con File.ReadAllLines("\192.XXX.XX.X\X\XXXXX\XXXXXXX\" & nomefile), non dovrei sostituire \192.XXX.XX.X\X\XXXXX\XXXXXXX\ con la folder.SelectedPath ?

Grazie veramente a tutti per la disponibilità e la pazienza e comunque mi devo mettere a studiare seriamente come già mi avete suggerito.

Buona giornata

Massimo


Mire non è il mio nick :rotfl:
Mire è il mio engine per creare giochi RPG.

Cmq, se quello è il codice che hai usato ovviamente non è dichiarato.
Io ti avevo posto semplicemente un esempio. il metodo GetFiles è inerente alla libreria Directory come suggerito da nessuno.

quindi dovrebbe essere


 Dim files As String() = Directory.GetFiles(folder.SelectedPath, "*.txt")



il resto va bene.

mire.forumfree.it/ - Mire Engine
C# UI Designer
26/11/19 14:09
xamm
Buonasera a tutti,

innanzitutto chiedo scusa a Thejuster per l'enorme svista.:hail:

Allora avrei corretto così:

'Ottengo tutti i file di tipo txt
Dim files As String() = Directory.GetFiles(folder.SelectedPath, "*.txt";)

'prendo il primo file txt che trova
Dim nomefile As String = files(0)

'Conto le linee
Dim lines As String() = File.ReadAllLines("\192.168.0.7\c$\inetpub\cartella FTP\" & nomefile)

'Stampo il numero di linee
Console.WriteLine("Linee: {0}", lines.Length)

... mi da "Indice oltre i limiti della matrice" sulla seguente istruzione:

Dim nomefile As String = files(0) ..... :hail: sbaglio sicuramente qualcosa ?

Grazie:)
aaa
26/11/19 17:11
Thejuster
se ti da quell'errore significa che non trova nessun file txt in quella cartella.

Ti assicuro che il codice funziona perfettamente. sbagli tu qualcosa.

metti un breackpoint sulla linea Dim nomefile as String = files(0)

Breackpoint si intente un punto di interruzione da parte del debugger per visionare ed analizzare il contenuto di una o più variabili.

velocemente, e quel pallino rosso che appare se fai doppio click a sinistra sul numero della lineaa.

quando il programma si ferma, ferma il cursore del mouse sulla variabile files ti dirà il contenuto di quella variabile.
e da li controlli espandendo l'elemeno files al suo interno ci sono tutti i file che la funzione ha recuperato.
controlla da li.

guarda la screen come esempio.

li è in C# ma è praticamente la stessa cosa, il Debugger di VS funziona uguale con il vb.net

PS: usa sempre un try Catch(Exception a) per evitare che il programma crashi.


Try
       'Ottengo tutti i file di tipo txt 
        Dim files As String() = Directory.GetFiles(folder.SelectedPath, "*.txt") 

        'prendo il primo file txt che trova 
        Dim nomefile As String = files(0) 

        'Conto le linee 
        Dim lines As String() = File.ReadAllLines("\192.168.0.7\c$\inetpub\cartella FTP\" & nomefile) 

        'Stampo il numero di linee 
        Console.WriteLine("Linee: {0}", lines.Length) 

Catch a As Exception
    Console.WriteLine(a.Message)
End Try


Ultima modifica effettuata da Thejuster 26/11/19 17:17
mire.forumfree.it/ - Mire Engine
C# UI Designer
27/11/19 9:15
xamm
Buongiorno a tutti.

Si Thejuster, hai ragione, sicuramente sbaglio io qualcosa e cerco di fare ordine.

Questo è il codice che funziona perfettamente ma che prevede che si dichiari esplicitamente il nome del file txt che nell'esempio era pippo.txt, dove dopo il click posso selezionare la cartella che contiene il txt, ed è il seguente:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim di As DirectoryInfo
        Dim folder As FolderBrowserDialog = New FolderBrowserDialog
        folder.SelectedPath = ("\192.xxxxxx\c$\xxxxxx\xxxxxx\")
        '------------------------------------------------------
        Dim lines As String() = File.ReadAllLines("\192.xxxxxx\c$\xxxxxx\xxxxxx\CARTELLA\pippo.txt")
        Console.WriteLine("Linee: {0}", lines.Length)
        '-------------------------------------------------------
        '--------------------------------------------------------
      

        '---------------------------------------------------------
        If folder.ShowDialog() = DialogResult.OK And folder.SelectedPath IsNot Nothing Then
            di = New DirectoryInfo(folder.SelectedPath)

            Dim DI1 As New IO.DirectoryInfo(folder.SelectedPath)

            MessageBox.Show("Presenti" & " " & DI1.GetFiles.GetLength(0).ToString - 2 & " " & "file .tif e" & " " & lines.Length.ToString & " " & "record nel file txt", "Conteggio file")

        End If

    End Sub


In realtà, dovrei però selezionare si una cartella che al suo interno contiene un solo file txt che però si chiama sempre in maniera diversa; pippo.txt piuttosto che topolino.txt etc.

Quindi ho adattato il codice che mi avete fornito in questa maniera:

 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim di As DirectoryInfo
        Dim folder As FolderBrowserDialog = New FolderBrowserDialog
        folder.SelectedPath = ("\192.xxxxxx\c$\xxxxxx\xxxxxx\")
        '------------------------------------------------------
        'Dim lines As String() = File.ReadAllLines("\192.xxxxxx\c$\xxxxxx\xxxxxx\CARTELLA\pippo.txt")
        'Console.WriteLine("Linee: {0}", lines.Length)
        '-------------------------------------------------------
        '--------------------------------------------------------
      'Ottengo tutti i file di tipo txt
        Dim files As String() = Directory.GetFiles(folder.SelectedPath, "*.txt")

        'prendo il primo file txt che trova
        Dim nomefile As String = files(0)

        'Conto le linee
        Dim lines As String() = File.ReadAllLines("\192.xxxxxx\c$\xxxxxx\xxxxxx\" & nomefile)

        'Stampo il numero di linee
        Console.WriteLine("Linee: {0}", lines.Length)

        '---------------------------------------------------------
        If folder.ShowDialog() = DialogResult.OK And folder.SelectedPath IsNot Nothing Then
            di = New DirectoryInfo(folder.SelectedPath)

            Dim DI1 As New IO.DirectoryInfo(folder.SelectedPath)

            MessageBox.Show("Presenti" & " " & DI1.GetFiles.GetLength(0).ToString - 2 & " " & "file .tif e" & " " & lines.Length.ToString & " " & "record nel file txt", "Conteggio file")

        End If

    End Sub


Effettuando il debug come suggerito, effettivamente all'istruzione
Dim nomefile As String = files(0)
mi dice, posizionandomi con il cursore su nomefile, nomefile nothing, forse perchè ho inserito il tuo codice nel punto sbagliato quando ancora non ho selezionato la folder.SelectedPath ?

Grazie ancora e scusatemi per le mie imprecisioni.
:k:

aaa
27/11/19 10:22
nessuno
Qui pero'
folder.SelectedPath = "....\")

manca la CARTELLA
folder.SelectedPath = (".....\CARTELLA\")
Ultima modifica effettuata da nessuno 27/11/19 10:32
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
27/11/19 12:03
xamm
Nel primo esempio di codice, quello funzionante, con il click apro il navigator e seleziono la cartella e poi nel comando file.ReadAllLines, specifico univocamente il percorso ed il nome del file txt

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
 
        Dim di As DirectoryInfo
        Dim folder As FolderBrowserDialog = New FolderBrowserDialog
        folder.SelectedPath = ("\192.xxxxxx\c$\xxxxxx\xxxxxx\")
        '------------------------------------------------------
        Dim lines As String() = File.ReadAllLines("\192.xxxxxx\c$\xxxxxx\xxxxxx\CARTELLA\pippo.txt")
        Console.WriteLine("Linee: {0}", lines.Length)


Nel secondo caso, quello che non mi funziona, ho remmato le due istruzioni

'Dim lines As String() = File.ReadAllLines("\192.xxxxxx\c$\xxxxxx\xxxxxx\CARTELLA\pippo.txt")
'Console.WriteLine("Linee: {0}", lines.Length)


ed inserito il codice che mi hai passato ottenendo quindi il seguente codice che mi dovrebbe permettere di aprire sempre il navigator, selezionare a manina la cartella giusta e poi, senza specificare nel codice il nome univoco del txt che è sempre diverso, fare tutto il resto e cioè contare i tif e le righe presenti nel txt per avere conferma che siano uguali:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
 
        Dim di As DirectoryInfo
        Dim folder As FolderBrowserDialog = New FolderBrowserDialog
        folder.SelectedPath = ("\192.xxxxxx\c$\xxxxxx\xxxxxx\")
        '------------------------------------------------------
        'Dim lines As String() = File.ReadAllLines("\192.xxxxxx\c$\xxxxxx\xxxxxx\CARTELLA\pippo.txt")
        'Console.WriteLine("Linee: {0}", lines.Length)
        '-------------------------------------------------------
        '--------------------------------------------------------
      'Ottengo tutti i file di tipo txt
        Dim files As String() = Directory.GetFiles(folder.SelectedPath, "*.txt")
 
        'prendo il primo file txt che trova
        Dim nomefile As String = files(0)
 
        'Conto le linee
        Dim lines As String() = File.ReadAllLines("\192.xxxxxx\c$\xxxxxx\xxxxxx\" & nomefile)
 
        'Stampo il numero di linee
        Console.WriteLine("Linee: {0}", lines.Length)
 
        '---------------------------------------------------------
        If folder.ShowDialog() = DialogResult.OK And folder.SelectedPath IsNot Nothing Then
            di = New DirectoryInfo(folder.SelectedPath)
 
            Dim DI1 As New IO.DirectoryInfo(folder.SelectedPath)
 
            MessageBox.Show("Presenti" & " " & DI1.GetFiles.GetLength(0).ToString - 2 & " " & "file .tif e" & " " & lines.Length.ToString & " " & "record nel file txt", "Conteggio file")
 
        End If
 
    End Sub


Grazie
aaa