Es bilden sich immer wenn ich auf Speichern drücke und neu Lade irgendwelche Sonderzeichen (’ÂÂÂÂ)

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von nafets.

    Es bilden sich immer wenn ich auf Speichern drücke und neu Lade irgendwelche Sonderzeichen (’ÂÂÂÂ)

    Ich bin noch ein totaler anfänger was visual basic angeht und habe ein Vokabeltrainer programmiert. So alles schön ung gut aber ich habe heute mal ein paar Vokabeln reingeschrieben abgespeichert und das Programm geschlossen. Als ich nun das Programm geöffnet habe und auf den Lade button gedrückt habe sind in der Tabelle irgendwelche Sonderzeichen entstanden. Immer wenn ich Speicher und wieder Lade werden es immer mehr dieser Zeichen. Könnt ihr mir bitte helfen es hat ja schon ma lalles funktioniert.


    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Function ListViewSave(ByRef LstVw As ListView, ByVal Path As String)
    3. Dim ListViewContent As String = ""
    4. For I As Integer = 0 To LstVw.Items.Count - 1
    5. ListViewContent += LstVw.Items.Item(I).Text & "##"
    6. For Int As Integer = 0 To LstVw.Items.Item(I).SubItems().Count - 1
    7. ListViewContent += LstVw.Items.Item(I).SubItems(Int).Text & "##"
    8. Next
    9. ListViewContent += vbNewLine
    10. Next
    11. If System.IO.File.Exists(Path) Then
    12. System.IO.File.Delete(Path)
    13. End If
    14. System.IO.File.AppendAllText(Path, ListViewContent)
    15. End Function
    16. Public Function ListViewLoad(ByRef LstVw As ListView, ByVal Path As String)
    17. Dim sLine As String
    18. Dim sItem() As String
    19. Dim ItemX As ListViewItem
    20. Dim IntCols As Integer
    21. IntCols = LstVw.Columns.Count
    22. FileOpen(1, Path, OpenMode.Input)
    23. With LstVw.Items
    24. While Not EOF(1)
    25. sLine = LineInput(1)
    26. sItem = Split(sLine, "##")
    27. ItemX = .Add(sItem(0), sItem(1))
    28. For I = 2 To IntCols
    29. ItemX.SubItems.Add(sItem(I))
    30. Next I
    31. End While
    32. End With
    33. FileClose(1)
    34. End Function
    35. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    36. With ListView1.Items.Add(InputBox("Wort eingeben"))
    37. .SubItems.Add(InputBox("Lösung"))
    38. End With
    39. End Sub
    40. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    41. For Each item As ListViewItem In ListView1.SelectedItems
    42. item.Remove()
    43. Next
    44. End Sub
    45. Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    46. For Each item As ListViewItem In ListView1.Items
    47. Dim loesung As String = InputBox(item.Text)
    48. If loesung = item.SubItems(1).Text Then
    49. MsgBox("Richtig", MsgBoxStyle.Information)
    50. Else
    51. MsgBox("Falsch", MsgBoxStyle.Critical)
    52. End If
    53. Next
    54. End Sub
    55. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    56. ListViewSave(ListView1, "H:\voc1.txt")
    57. End Sub
    58. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    59. ListViewLoad(ListView1, "H:\voc1.txt")
    60. End Sub
    61. Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
    62. Me.Close()
    63. End Sub
    64. End Class


    *Topic verschoben, das ist eindeutig VB.NET und kein Excel-VBA!*
    Bilder
    • Screenshot_1.png

      19,66 kB, 573×463, 315 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Visual Studio - Empfohlene Einstellungen
    vb-paradise.de/allgemeines/tip…euen-vb-net-alternativen/
    Wenn Du diese beiden Posts mal überfliegst und Deinen Code dementsprechend überarbeitest, und ich Dir noch sage, dass Du ein passendes Encoding verwenden solltest (ich empfehle UTF8), dann solltest Du das selber lösen können.

    Wenn Du nicht selbst drauf kommst (bitte trotzdem einfach mal probieren), dann kannst Du gerne nochmal nachfragen.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Um gegenüber Nikos Post noch etwas konkreter zu werden: Nimm anstatt den alten Methoden lieber einen StreamReader. Dieser lässt sich ziemlich ähnlich wie die alten Methoden verwenden, ist jedoch in der Lage, mit den meisten Umständen (wie dem richtigen Encoden, was hier das Problem zu sein scheint), umzugehen. Eine Einführung zum StreamReader findest du hier: dotnetperls.com/streamreader-vbnet (Beispiel 2 entspricht ungefähr dem, was du aktuell machst).

    PS: Für die Zukunft: Fehler am Encoding wie hier kannst du oft daran erkennen, dass Umlaute oder Sonderzeichen (äöüß...) falsch dargestellt werden. So sind bei dir nur Worte mit diesen Zeichen betroffen (Öffentlichkeit, täglich, ...)