For schleife gibt nicht alles aus

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    For schleife gibt nicht alles aus

    hey com. hab ein problem und zwar neme ich aus einer datei zeile für zeile daten raus die ich dann in ein label schreiben möchte,
    komischerweise schreibt der aber nur die erste nicht die zweite zeile in ein label (momentan gibt es nur 2)

    hir mal mein code:

    VB.NET-Quellcode

    1. versionen = File.ReadAllLines("C:\MVS\v.txt")
    2. Label1.Text = versionen(0) & vbCrLf & versionen(1) '<-- hir werden alle "versionen" angezeigt
    3. For i As Integer = 0 To versionen.Length - 1 '<-- hir nur ein (von 2)
    4. Dim label As New Label
    5. With label
    6. .Text = versionen(i)
    7. .Name = "L" & i
    8. .Location = New Point(10, i * 10 + 50)
    9. End With
    10. Me.Controls.Add(label)
    11. Next


    hoffe ihr könt mir helfen
    Mfg joscha999
    es ligt ja nicht am label es ligt an der schleife selber denn:

    VB.NET-Quellcode

    1. For i As Integer = 0 To versionen.Length - 1
    2. File.WriteAllText("C:\MVS\v_save.txt", versionen(i) & vbCrLf)
    3. Next

    klapt auch ned
    in der textdatei steht auch nur eine verion drinn
    Ja, im ersten Durchgang schreibst du die erste Version rein, im zweiten Durchgang die zweite.
    WriteAllText ersetzt den kompletten Inhalt mit der Datei.
    Probier das:

    VB.NET-Quellcode

    1. For i As Integer = 0 To versionen.Length - 1
    2. MessageBox.Show(versionen(i))
    3. Next
    Funktioniert auch.
    Mit der Schleife stimmt sicherlich nichts nicht.
    Das Label muss auf AutoSize = True stehen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Was auch logisch ist, denn Du überschreibst die Datei beim zweiten Mal.

    Mache das so:

    VB.NET-Quellcode

    1. Dim Versionen() As String = IO.File.ReadAllLines(...)
    2. Label1.Text = String.Join(vbCrLf, Versionen)


    oder alternativ mit Schleife:

    VB.NET-Quellcode

    1. Dim Versionen() As String = IO.File.ReadAllLines(...)
    2. Dim SB As New System.Text.StringBuilder
    3. For Each i As String In Versionen
    4. SB.AppendLine(i)
    5. Next
    6. Label1.Text = SB.ToString


    Für jede Zeile ein neues Label anzulegen ist unsinnig ^^



    Edit: hm...
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils