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 - Conteggio record in file txt
Forum - C# / VB.NET - Conteggio record in file txt - Pagina 3

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:19
Martedì, 26/11/2019
Testo quotato

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 il 26/11/2019 alle 10: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à.
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 11:08
Martedì, 26/11/2019
Testo quotato

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:

Codice sorgente - presumibilmente VB.NET

  1. 'Ottengo tutti i file di tipo txt
  2.         Dim files As String() = GetFiles(folder.SelectedPath, "*.txt")
  3.  
  4.         'prendo il primo file txt che trova
  5.         Dim nomefile As String = files(0)
  6.  
  7.         'Conto le linee
  8.         Dim lines As String() = File.ReadAllLines("\\192.XXX.XX.X\X\XXXXX\XXXXXXX\" & nomefile)
  9.  
  10.         'Stampo il numero di linee
  11.         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

Codice sorgente - presumibilmente C# / VB.NET

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



il resto va bene.



https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
xamm (Normal User)
Rookie


Messaggi: 24
Iscritto: 30/09/2015

Segnala al moderatore
Postato alle 15:09
Martedì, 26/11/2019
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:)

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 18:11
Martedì, 26/11/2019
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.

Codice sorgente - presumibilmente VB.NET

  1. Try
  2.        'Ottengo tutti i file di tipo txt
  3.         Dim files As String() = Directory.GetFiles(folder.SelectedPath, "*.txt")
  4.  
  5.         'prendo il primo file txt che trova
  6.         Dim nomefile As String = files(0)
  7.  
  8.         'Conto le linee
  9.         Dim lines As String() = File.ReadAllLines("\\192.168.0.7\c$\inetpub\cartella FTP\" & nomefile)
  10.  
  11.         'Stampo il numero di linee
  12.         Console.WriteLine("Linee: {0}", lines.Length)
  13.  
  14. Catch a As Exception
  15.     Console.WriteLine(a.Message)
  16. End Try




Thejuster ha allegato un file: Immagine.PNG (23450 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da Thejuster il 26/11/2019 alle 18:17


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
xamm (Normal User)
Rookie


Messaggi: 24
Iscritto: 30/09/2015

Segnala al moderatore
Postato alle 10:15
Mercoledì, 27/11/2019
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:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  2.  
  3.         Dim di As DirectoryInfo
  4.         Dim folder As FolderBrowserDialog = New FolderBrowserDialog
  5.         folder.SelectedPath = ("\\192.xxxxxx\c$\xxxxxx\xxxxxx\")
  6.         '------------------------------------------------------
  7.         Dim lines As String() = File.ReadAllLines("\\192.xxxxxx\c$\xxxxxx\xxxxxx\CARTELLA\pippo.txt")
  8.         Console.WriteLine("Linee: {0}", lines.Length)
  9.         '-------------------------------------------------------
  10.         '--------------------------------------------------------
  11.      
  12.  
  13.         '---------------------------------------------------------
  14.         If folder.ShowDialog() = DialogResult.OK And folder.SelectedPath IsNot Nothing Then
  15.             di = New DirectoryInfo(folder.SelectedPath)
  16.  
  17.             Dim DI1 As New IO.DirectoryInfo(folder.SelectedPath)
  18.  
  19.             MessageBox.Show("Presenti" & " " & DI1.GetFiles.GetLength(0).ToString - 2 & " " & "file .tif e" & " " & lines.Length.ToString & " " & "record nel file txt", "Conteggio file")
  20.  
  21.         End If
  22.  
  23.     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:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  2.  
  3.         Dim di As DirectoryInfo
  4.         Dim folder As FolderBrowserDialog = New FolderBrowserDialog
  5.         folder.SelectedPath = ("\\192.xxxxxx\c$\xxxxxx\xxxxxx\")
  6.         '------------------------------------------------------
  7.         'Dim lines As String() = File.ReadAllLines("\\192.xxxxxx\c$\xxxxxx\xxxxxx\CARTELLA\pippo.txt")
  8.         'Console.WriteLine("Linee: {0}", lines.Length)
  9.         '-------------------------------------------------------
  10.         '--------------------------------------------------------
  11.       'Ottengo tutti i file di tipo txt
  12.         Dim files As String() = Directory.GetFiles(folder.SelectedPath, "*.txt")
  13.  
  14.         'prendo il primo file txt che trova
  15.         Dim nomefile As String = files(0)
  16.  
  17.         'Conto le linee
  18.         Dim lines As String() = File.ReadAllLines("\\192.xxxxxx\c$\xxxxxx\xxxxxx\" & nomefile)
  19.  
  20.         'Stampo il numero di linee
  21.         Console.WriteLine("Linee: {0}", lines.Length)
  22.  
  23.         '---------------------------------------------------------
  24.         If folder.ShowDialog() = DialogResult.OK And folder.SelectedPath IsNot Nothing Then
  25.             di = New DirectoryInfo(folder.SelectedPath)
  26.  
  27.             Dim DI1 As New IO.DirectoryInfo(folder.SelectedPath)
  28.  
  29.             MessageBox.Show("Presenti" & " " & DI1.GetFiles.GetLength(0).ToString - 2 & " " & "file .tif e" & " " & lines.Length.ToString & " " & "record nel file txt", "Conteggio file")
  30.  
  31.         End If
  32.  
  33.     End Sub



Effettuando il debug come suggerito, effettivamente all'istruzione
Codice sorgente - presumibilmente C# / VB.NET

  1. 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:


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:22
Mercoledì, 27/11/2019
Qui pero'
Codice sorgente - presumibilmente Plain Text

  1. folder.SelectedPath = "....\")



manca la CARTELLA
Codice sorgente - presumibilmente Plain Text

  1. folder.SelectedPath = (".....\CARTELLA\")


Ultima modifica effettuata da nessuno il 27/11/2019 alle 11: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à.
PM Quote
Avatar
xamm (Normal User)
Rookie


Messaggi: 24
Iscritto: 30/09/2015

Segnala al moderatore
Postato alle 13:03
Mercoledì, 27/11/2019
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

Codice sorgente - presumibilmente VB.NET

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



Nel secondo caso, quello che non mi funziona, ho remmato le due istruzioni
Codice sorgente - presumibilmente C# / VB.NET

  1. 'Dim lines As String() = File.ReadAllLines("\\192.xxxxxx\c$\xxxxxx\xxxxxx\CARTELLA\pippo.txt")
  2. '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:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  2.  
  3.         Dim di As DirectoryInfo
  4.         Dim folder As FolderBrowserDialog = New FolderBrowserDialog
  5.         folder.SelectedPath = ("\\192.xxxxxx\c$\xxxxxx\xxxxxx\")
  6.         '------------------------------------------------------
  7.         'Dim lines As String() = File.ReadAllLines("\\192.xxxxxx\c$\xxxxxx\xxxxxx\CARTELLA\pippo.txt")
  8.         'Console.WriteLine("Linee: {0}", lines.Length)
  9.         '-------------------------------------------------------
  10.         '--------------------------------------------------------
  11.       'Ottengo tutti i file di tipo txt
  12.         Dim files As String() = Directory.GetFiles(folder.SelectedPath, "*.txt")
  13.  
  14.         'prendo il primo file txt che trova
  15.         Dim nomefile As String = files(0)
  16.  
  17.         'Conto le linee
  18.         Dim lines As String() = File.ReadAllLines("\\192.xxxxxx\c$\xxxxxx\xxxxxx\" & nomefile)
  19.  
  20.         'Stampo il numero di linee
  21.         Console.WriteLine("Linee: {0}", lines.Length)
  22.  
  23.         '---------------------------------------------------------
  24.         If folder.ShowDialog() = DialogResult.OK And folder.SelectedPath IsNot Nothing Then
  25.             di = New DirectoryInfo(folder.SelectedPath)
  26.  
  27.             Dim DI1 As New IO.DirectoryInfo(folder.SelectedPath)
  28.  
  29.             MessageBox.Show("Presenti" & " " & DI1.GetFiles.GetLength(0).ToString - 2 & " " & "file .tif e" & " " & lines.Length.ToString & " " & "record nel file txt", "Conteggio file")
  30.  
  31.         End If
  32.  
  33.     End Sub



Grazie

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:29
Mercoledì, 27/11/2019
Testo quotato

Postato originariamente da 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



E così NON HA SENSO. Se indichi tu il nome del file allora che senso ha??

Testo quotato


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




Testo quotato

ed inserito il codice che mi hai passato ...



Non ti ho passato nessun codice oppure non hai capito nulla ...

Ti faccio delle semplici domande a cui ti prego di rispondere in modo PRECISO e DIRETTO senza passare ad altri argomenti ...

Il file di testo in quale cartella è ? E' in \\192.....\....\...\CARTELLA   ?
Se è così DEVI inserire anche CARTELLA nel percorso usato nella GetFiles OVVERO

Codice sorgente - presumibilmente C# / VB.NET

  1. Dim files As String() = Directory.GetFiles("\\192....\....\....\CARTELLA\", "*.txt")



e tutto il codice che precede NON ha alcun senso.

Possibile che ancora tu non abbia risolto una cosa così semplice?


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à.
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo