+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [VB 2010] Leggere un file di testo in una TextBox su più righe

  1. #1
    vanilla85 non è in linea Novello
    Post
    21

    [VB 2010] Leggere un file di testo in una TextBox su più righe

    Ho cominciato a studiare STREAMREADER come consigliato dal bravissimo MarcoGG ma sono di nuovo in difficoltà, spero possiate aiutarmi.

    Vi posto il codice:
    codice:
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            'Se il file esiste lo leggeggerà, altrimenti ...
            If Not IO.File.Exists("c:\file.txt") Then 'Se il file non esiste, visualizza un messaggio ed esce
                MessageBox.Show("Il file non esiste!")
                Exit Sub
            End If
            Dim Reader As New IO.StreamReader("c:\file.txt") 'il file esiste, quindi lo apre in lettura
            Do While Not Reader.EndOfStream 'Legge ogni sigola riga del file fino a quando non arriva alla fine
                'La funzione d'istanza ReadLine restituisce una linea di testo dal file
                TextBox1.Text = Reader.ReadLine 'La funzione ReadLine restituisce una singola linea(riga) alla volta, contenuta nel file
            Loop
        End Sub
    Come ben vedete, la textbox1 visualizzerà soltanto l'ultima riga del file di testo. Il perchè non lo capisco. Ho impostato MultiLine su True.

    Se invece scrivo la seguente riga:

    codice:
    TextBox1.Text = TextBox1.Text & Reader.ReadLine
    mi scrive tutto il contenuto del file in modo strano: la prima riga uno spazio e tutte le altre righe come fossero un unica parola. Sapete perchè?

    mentre se scrivo:

    codice:
    TextBox1.Text = TextBox1.Text & Reader.ReadLine & vbCrLf
    vedo solo la prima riga. Sono sicura ... il problema è il multiline della textbox! ho ragione? che posso fare? grazie a tutti per l'aiuto, sono un

    autodidatta ... con questa crisi non posso certo permettermi un corso e poi qui nel forum siete molto preparati oltre che disponibili.

    Ciao e grazie

  2. #2
    L'avatar di elisab
    elisab non è in linea Very Important Person
    Post
    1,750
    Hai fatto un po' di pasticcio con il titolo Posizionarsi su un elemento di una combobox al verificarsi di una condizion, adesso te lo cambio.
    Il Crossposting è vietato dalla Netiquette.

    Tutti gli utenti sono invitatati ad indicare nel titolo la versione di VB, Visual Studio o il Framework di compilazione.

    NB: In presenza del SyntaxHighlighter (codice colorato con numeri di riga a lato) prima di copiare il codice eseguire doppio click sulla finestra di codice, altrimenti mancheranno tutti i ritorno a capo.

  3. #3
    L'avatar di bumm
    bumm non è in linea Very Important Person Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Luogo
    Bologna
    Post
    1,950
    Blogs
    1
    Puoi scrivere tutte le righe in un array di stringhe, e poi assegnarlo alla proprietà TextBox1.Lines
    "HeloWorld.exe" 17 errors, 31 warnings.

    Non mi mandate le richieste di aiuto via PM! Non vi risponderò! Tutte le domande fateli sul forum!

  4. #4
    Luogo
    BS / MI
    Post
    1,608
    Blogs
    33
    Quote Originariamente inviato da vanilla85 Visualizza il messaggio
    Ho cominciato a studiare STREAMREADER come consigliato dal bravissimo MarcoGG ma sono di nuovo in difficoltà, spero possiate aiutarmi.
    ...
    Il che sicuramente male non fa, anzi.
    Ma se alludi alle pregresse richieste, e mie relative risposte, in particolare questa :
    [VB 2010] Popolare una COMBOBOX con file di testo e convertire tutto in maiuscolo

    avevo chiaramente scritto che in questi casi uno StreamReader è superfluo.

    Usare uno StreamReader non è sbagliato, ma perchè farlo, e stare a gestirsi un Loop se si può evitare ?

    codice:
            Dim fullPath As String = "C:\file.txt"
            'Se il file esiste lo leggerà, altrimenti ...
            If Not IO.File.Exists(fullPath) Then 'Se il file non esiste, visualizza un messaggio ed esce
                MessageBox.Show("Il file non esiste!")
                Exit Sub
            End If
            TextBox1.Text = IO.File.ReadAllText(fullPath)
    Chiaramente la Proprietà MultiLine di TextBox1 è a True.
    Noterai che il Metodo ReadAllText interpreta correttamente i ritorni a capo del file di testo.

    Il senso del mio consiglio di farti una cultura su System.IO è quello di capire in profondità i Metodi, provandoli in varie situazioni. Questo ti permette di ottenere ciò che vuoi con meno codice...
    Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
    Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

  5. #5
    L'avatar di bumm
    bumm non è in linea Very Important Person Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Luogo
    Bologna
    Post
    1,950
    Blogs
    1
    Ciao Marco, credo che ha capito la tua soluzione su combobox, ma comunque deve fare esercizi su StreamReader.
    ReadAllText() va bene per i files di dimensioni piccoli. Svantaggio è che non hai il controllo durante caricamento e sei costretto a caricare tutto il file. Leggendo riga per riga si può implementare l'impaginazione oppure lo scrolling dinamico. Credo che l'esercizio non fa male a nessuno
    "HeloWorld.exe" 17 errors, 31 warnings.

    Non mi mandate le richieste di aiuto via PM! Non vi risponderò! Tutte le domande fateli sul forum!

  6. #6
    vanilla85 non è in linea Novello
    Post
    21
    grazie mi documento e faccio esercizi

  7. #7
    Luogo
    BS / MI
    Post
    1,608
    Blogs
    33
    Quote Originariamente inviato da bumm Visualizza il messaggio
    Ciao Marco, credo che ha capito la tua soluzione su combobox, ma comunque deve fare esercizi su StreamReader.
    In tal caso completo l'esempio :

    codice:
            'Dichiarazioni
            Dim fullPath As String = "C:\file.txt"
            Dim linee As New List(Of String)
            Dim linea As String
    
            'Se il file esiste lo leggerà, altrimenti ...
            If Not IO.File.Exists(fullPath) Then 'Se il file non esiste, visualizza un messaggio ed esce
                MessageBox.Show("Il file non esiste!")
                Exit Sub
            End If
    
            'StreamReader
            Using SR As New IO.StreamReader(fullPath)
                'Leggo la prima linea
                linea = SR.ReadLine
                Do Until linea Is Nothing
                    linee.Add(linea)
                    linea = SR.ReadLine 'Leggo linea successiva
                Loop
            End Using
    A questo punto :

    codice:
    TextBox1.Lines = linee.ToArray
    oppure :

    codice:
    TextBox1.Text = String.Join(Environment.NewLine, linee)
    oppure ... ecc...

    Quote Originariamente inviato da bumm Visualizza il messaggio
    Credo che l'esercizio non fa male a nessuno
    Sicuro.

    Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
    Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

  8. #8
    vanilla85 non è in linea Novello
    Post
    21
    gentilissimo ... comunque sono davvero alle prime armi: non mi ero accorta che l'esempio già funzionava ... perchè bastava usare il tasto freccia giù e il contenuto delle righe cambiava ... devo impostare qualcosa per avere una barra di scorrimento della textbox qualora il contenuto sia su più righe o se la dimensione della textbox non basta a contenere l'intera riga.

    a volte mi viene da mollare ... non so dove documentarmi, fare tutto da sola mi scoraggia. Probabilmente voi siete l'unico incentivo che mi da la forza di proseguire: grazie

  9. #9
    Luogo
    BS / MI
    Post
    1,608
    Blogs
    33
    Quote Originariamente inviato da vanilla85 Visualizza il messaggio
    ...
    a volte mi viene da mollare ... non so dove documentarmi, fare tutto da sola mi scoraggia. Probabilmente voi siete l'unico incentivo che mi da la forza di proseguire: grazie
    I problemi che riscontri tu sono classici.
    Ma dire "non so dove documentarmi" è un po' eccessivo...

    Online c'è MSDN. Qualsiasi cosa cerchi, Classe, Metodo, Proprietà, ecc. lì c'è.
    Lo so, all'inizio sarà un po' "una palla", ma la risposta numero uno al concetto del "documentarsi" è sempre MSDN.
    Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
    Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

  10. #10
    vanilla85 non è in linea Novello
    Post
    21
    MarcoGG tu hai ragione, c'è msdn ma formulare una domanda che corrisponda a qualcosa di preciso per risolvere un problema ... tu sei autodidatta? forse si, comunque sei molto bravo ... a me mancano forse le basi ... ho diversi libri, ma è complicato trovare la soluzione ad uno specifico problema.

    Ora apro un altro thread e mi spiego meglio

    ps. come fai ad inserire una parte del mio commento nel tuo? mi riferisco alle caselle blu che inseriscono nella tua risposta una risposta di un altro utente ...

    MarcoGG spero di poter continuare(senza esasperare ne approfittarne) a contare sul tuo aiuto e quello di altri. Ciao

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi