none
Vb.net -> Scrivere centinaia di label in txt. RRS feed

  • Domanda

  • Ho scritto questo codice ma non da nessun risultato.

    Devo poter scrivere centinaia di label in un file txt.

    Cosa serve per scrivere una sotto l'altra?


    Sub Salvataggio()

    Dim R = 1, objStreamWriter As StreamWriter objStreamWriter = New StreamWriter(Application.StartupPath & "\Sorgente\Salvataggio\salvato.txt") With objStreamWriter Do While R <= 209 'Totale label in Memoria (Potrebbero diventare anche 500 quindi deve essere automatico) .WriteLine(Controls("Label" & R & ".Text"))

    R+=1

    Loop .Close() End With End Sub

    Ho aggiunto questo sperando che funzionasse, ma nulla!

            Dim R = 1, R1 = 0, L = IO.File.ReadAllLines(Application.StartupPath & "\Sorgente\Salvataggio\salvato.txt"), objStreamWriter As StreamWriter
            objStreamWriter = New StreamWriter(Application.StartupPath & "\Sorgente\Salvataggio\salvato.txt")
    
    
            With objStreamWriter
                Do While R <= 209 'Totale label in Memoria (Potrebbero diventare anche 500 quindi deve essere automatico)
                    If L(R1) <> Controls("Label" & R & ".Text") Then .WriteLine(Controls("Label" & R & ".Text")) : R += 1 : R1 += 1
                Loop
                .Close()
            End With
         Dim R = 1, R1 = 0, L = IO.File.ReadAllLines(Application.StartupPath & "\Sorgente\Salvataggio\salvato.txt"), objStreamWriter As StreamWriter
            objStreamWriter = New StreamWriter(Application.StartupPath & "\Sorgente\Salvataggio\salvato.txt")
    
    
            With objStreamWriter
                Do While R <= 209 'Totale label in Memoria (Potrebbero diventare anche 500 quindi deve essere automatico)
                    If L(R1) = "" Then .WriteLine(Controls("Label" & R & ".Text")) : R += 1 : R1 += 1
                    Loop
                    .Close()
                    End With
    
    
                    End Sub










    • Modificato _F_ sabato 7 dicembre 2019 15:36
    sabato 7 dicembre 2019 14:59

Risposte

  • Il tuo errore sta nella riga

    .WriteLine(Controls("Label" & R & ".Text"))

    che devi scrivere

    .WriteLine(Controls("Label" & R ).Text)

    Per automatizzare se non ti interessa l'ordine di scrittura puoi fare così

            Dim objStreamWriter As StreamWriter
            Dim formLabels = Me.Controls.OfType(Of Label)()
            objStreamWriter = New StreamWriter("nomedelfile")
            With objStreamWriter
                For Each formLabel As Label In formLabels
                    .WriteLine(formLabel.Text)
                Next
                .Close()
            End With

    altrimenti per prima cosa devi contare quante sono le label poi fare un ciclo

            Dim objStreamWriter As StreamWriter
            Dim N As Integer = Me.Controls.OfType(Of Label)().Count
            objStreamWriter = New StreamWriter("nomedelfile")
            With objStreamWriter
                For R As Integer = 1 To N
                    .WriteLine(Controls("Label" & R).Text)
                Next
                .Close()
            End With

    • Contrassegnato come risposta _F_ sabato 7 dicembre 2019 16:39
    sabato 7 dicembre 2019 16:16

Tutte le risposte

  • Hai provato con un for each facendo il writeline????
    sabato 7 dicembre 2019 15:47
  • Non riesco ad utilizzare writeline

                RF = WriteLine(Controls("Label" & R & ".Text"))

    sabato 7 dicembre 2019 15:50
  • Aspetta al posto di  Do While R <= 209 utilizzare "Hai provato con un for each"

    Vedo come si fa e ci provo!

    Non so utilizzare for each ora lo cerco!

    sabato 7 dicembre 2019 15:53
  • Non capisco l'esempio sulla guida.

    Se ho capito bene devo studiare questo:

    ' Create a list of strings by using a
    ' collection initializer.
    Dim lst As New List(Of String) _
        From {"abc", "def", "ghi"}
    
    ' Iterate through the list.
    For Each item As String In lst
        Debug.Write(item & " ")
    Next
    Debug.WriteLine("")
    'Output: abc def ghi

    Ho fatto qualcosa ma non capisco cosa devo inserire al posto di    For Each R:

        With objStreamWriter
                For Each R
               .WriteLine(Controls("Label" & R & ".Text")) : R += 1 : R1 += 1
                Next
                .Close()
            End With


    • Modificato _F_ sabato 7 dicembre 2019 16:09
    sabato 7 dicembre 2019 15:59
  • Il tuo errore sta nella riga

    .WriteLine(Controls("Label" & R & ".Text"))

    che devi scrivere

    .WriteLine(Controls("Label" & R ).Text)

    Per automatizzare se non ti interessa l'ordine di scrittura puoi fare così

            Dim objStreamWriter As StreamWriter
            Dim formLabels = Me.Controls.OfType(Of Label)()
            objStreamWriter = New StreamWriter("nomedelfile")
            With objStreamWriter
                For Each formLabel As Label In formLabels
                    .WriteLine(formLabel.Text)
                Next
                .Close()
            End With

    altrimenti per prima cosa devi contare quante sono le label poi fare un ciclo

            Dim objStreamWriter As StreamWriter
            Dim N As Integer = Me.Controls.OfType(Of Label)().Count
            objStreamWriter = New StreamWriter("nomedelfile")
            With objStreamWriter
                For R As Integer = 1 To N
                    .WriteLine(Controls("Label" & R).Text)
                Next
                .Close()
            End With

    • Contrassegnato come risposta _F_ sabato 7 dicembre 2019 16:39
    sabato 7 dicembre 2019 16:16
  • Patel45 sembriamo una coppia di sposini, litghiamo ma ci voglimo bene.

    Mi hai salvato grazie!

    Sei un mito!

    sabato 7 dicembre 2019 16:23
  • quando uno scrive

    .WriteLine(Controls("Label" & R & ".Text"))

    si vede proprio che gli mancano le basi, il controllo è Controls("Label" & R), per scrivere il suo contenuto occorre utilizzare la sua proprietà text.

    Però apprezzo la tua ferrea volontà, non di studiare ma di fare.

    sabato 7 dicembre 2019 17:17
  • Ho una vita molto complicata, un giorno ti spiegherò il perché del mio "comportamento".

    Ti garantisco che comunque è un errore di distrazione e di poca attenzione perché di questi codici ne ho scritti a pacchi.

    E ti correggo: :-)

    "si vede proprio che gli mancano le basi" - si vede proprio che TI mancano le basi !

    Sono sicuro che capirai oltre la correzione!

    Grazie!

    sabato 7 dicembre 2019 17:33
  • non leggi attentamente, ho scritto

    quando uno scrive ....si vede proprio che gli mancano le basi

    il soggetto è uno, non tu

    sabato 7 dicembre 2019 18:03
  • Qualcosa non va ti giuro che compilava il file correttamente poi ad un certo punto da dieci minuti fa in poi mi segnala questo errore anomalo, funzionava! Non ho cambiato nulla!

    Credendo ad un tilt temporaneo ho provato a pulire la soluzione e ricompilarla ma nulla, ripetuto più volte.

    Funziona solo se aggiungo 2 label, allora mi è venuto il dubbio di controllare il designer ma ci sono tutte e nulla di più! .. ne ho aggiunte 2 che comunque andavano fatte e funziona!





    • Modificato _F_ domenica 8 dicembre 2019 01:44
    sabato 7 dicembre 2019 23:39