Werte aus einer Listbox(aus Arrays) in eine Datei schreiben

  • VB6

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von peterfido.

    Werte aus einer Listbox(aus Arrays) in eine Datei schreiben

    Hallo ich habe mal wieder ein Problem.

    Habe ein Programm bei dem ich in drei Textfelder was eingeben. das eingegebene wird in einer listbox ausgegeben und zwar hintereinander. zb. 12345 , Haus , Straße. Da sind bei mir jeweil ein Array. Jetzt möchte ich diesen bzw den gesamten Inhalt in eine Datei speicher wenn das Programm beendet wird. Ein Ende-Button soll es aber nicht geben.
    Wenn das Programm dann wieder gestartet wird, sollen die Daten wieder im Programm eingelesen werden und ggf eine Message wenn noch keine Datei vorhanden ist.
    Geht es auch das Man eine Datei anlegt?

    Hier ist der Quelltext von meinem jetzigen Programm ohne diese Funktion:



    Visual Basic-Quellcode

    1. Private Zustand As String 'Variable deklarieren
    2. Private Const MAXANZ = 100 'Anzahl der erlaubten Einträge
    3. Private Nummer As Single 'Variable deklarieren
    4. Private Namen As String 'Variable deklarieren
    5. Private Postleitzahl As String 'Variable deklarieren
    6. Private Zaehler As Integer 'Variable deklarieren
    7. Private Zahlenarray(1 To MAXANZ) As Single 'Array deklarieren
    8. Private Namenarray(1 To MAXANZ) As String 'Array deklarieren
    9. Private Plzarray(1 To MAXANZ) As String 'Array deklarieren
    10. Private pos As Integer 'Variable deklarieren
    11. Private Sub CmdHinzu_Click() 'Butto Hinzufügen
    12. Dim Nummer As Single 'Variable deklarieren
    13. Dim pos As Integer 'Variable deklarieren
    14. If IsNumeric(txtnummer.Text) And Not txtname.Text = "" Then 'Starten der IF-Anweisung
    15. Nummer = txtnummer.Text 'Der Variablen Nummer den Inhalt des Textfeldes zuordnen
    16. If Zaehler <= MAXANZ Then 'IF Anweisung starte wenn die maximale Anzahl noch nicht erreicht ist
    17. If Not Doppeleintrag(Zahlenarray, Zaehler - 1, Nummer) Then 'Starten von Subroutine
    18. Namen = txtname.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
    19. Nummer = txtnummer.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
    20. Postleitzahl = txtplz.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
    21. lstausgabe.AddItem txtnummer.Text & " ; " & txtname.Text & " ; " & txtplz.Text 'Ausgabe in Listbox
    22. Zahlenarray(Zaehler) = Nummer 'Der Variablen den Inhalt der anderen Variablen zuordenen
    23. Plzarray(Zaehler) = Postleitzahl 'Der Variablen den Inhalt der anderen Variablen zuordenen
    24. Namenarray(Zaehler) = Namen 'Der Variablen den Inhalt der anderen Variablen zuordenen
    25. txtnummer.SetFocus
    26. txtnummer.Text = "" 'Textfeld leeren
    27. txtplz.Text = "" 'Textfeld leeren
    28. txtname.Text = "" 'Textfeld leeren
    29. Zaehler = Zaehler + 1 'Zaehler um einen erhöhen
    30. Else
    31. MsgBox "Diese Kundennummer ist schon vorhanden", , "Hinweis" 'Hinweis ausgeben
    32. End If
    33. Else
    34. MsgBox "Das Eingabefeld ist voll!", , "Hinweis" 'Hinweis ausgeben
    35. Zustand = "Status: vorhandene Eingabe bearbeiten" 'Variable zuordnen
    36. End If
    37. Else
    38. MsgBox "Es muss eine Kundennummer und ein Name eingegeben sein!", , "Hinweis" 'Hinweis ausgeben
    39. End If
    40. End Sub
    41. Private Sub cmdaendern_Click()
    42. Dim pos As Integer 'Variable deklarieren
    43. If txtnummer.Text = "" Or txtplz.Text = "" Or txtname.Text = "" Then 'If-Anweisung starten
    44. MsgBox "Bitte prüfen Sie die Eingabe", , "Hinweis" 'Hinweis ausgebe
    45. Else
    46. pos = lstausgabe.ListIndex + 1 'Listindex um 1 erhöhen
    47. Namen = txtname.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
    48. Nummer = txtnummer.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
    49. Postleitzahl = txtplz.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
    50. lstausgabe.List(lstausgabe.ListIndex) = txtnummer.Text & " ; " & txtname.Text & " ; " & txtplz.Text 'Ausgabe in Listbox
    51. Zahlenarray(pos) = Nummer 'Der Variablen den Inhalt der anderen Variablen zuordenen
    52. Plzarray(pos) = Postleitzahl 'Der Variablen den Inhalt der anderen Variablen zuordenen
    53. Namenarray(pos) = Namen 'Der Variablen den Inhalt der anderen Variablen zuordenen
    54. End If
    55. End Sub

    Visual Basic-Quellcode

    1. Private Sub CmdLoeschen_Click() 'Löschen Button
    2. Dim i As Integer 'Variable deklarieren
    3. If lstausgabe.ListIndex = -1 Then ' Kein Eintrag markiert
    4. MsgBox "Bitte einen Eintrag markieren!", , "Hinweis" 'Hinweis ausgeben
    5. Else
    6. If MsgBox("Wirklich Löschen?", vbYesNo, "Hinweis") = vbYes Then 'Hinweis ausgeben
    7. pos = lstausgabe.ListIndex + 1 'Listindex um 1 erhöhen
    8. For i = pos To Zaehler - 1 'Array zusammenschieben
    9. Zahlenarray(i) = Zahlenarray(i + 1)
    10. Plzarray(i) = Plzarray(i + 1)
    11. Namenarray(i) = Namenarray(i + 1)
    12. Next
    13. Zaehler = Zaehler - 1 'Anzahl um 1 verringern
    14. lstausgabe.Clear 'Liste löschen
    15. ArrayInListbox 'Aufruf einer Subroutine
    16. txtnummer.Text = "" 'Textfeld leeren
    17. txtplz.Text = "" 'Textfeld leeren
    18. txtname.Text = "" 'Textfeld leeren
    19. End If
    20. End If
    21. End Sub
    22. Private Sub CmdZustand_Click()
    23. If Zustand = "Status: Neue Eingabe" Then 'If-Anweisung
    24. Zustand = "Status: vorhandene Eingabe bearbeiten" 'Zustand ändern
    25. lblzustand.Caption = Zustand 'Zustand ausgeben
    26. cmdloeschen.Enabled = True 'Button aktivieren
    27. cmdaendern.Enabled = True 'Button aktivieren
    28. cmdhinzu.Enabled = False 'Button deaktivieren
    29. txtnummer.Enabled = False 'Textfeld deaktivieren
    30. txtplz.Enabled = False 'Textfeld deaktivieren
    31. txtname.Enabled = False 'Textfeld deaktivieren
    32. txtnummer.Text = "" 'Textfeld leeren
    33. txtplz.Text = "" 'Textfeld leeren
    34. txtname.Text = "" 'Textfeld leeren
    35. Else
    36. Zustand = "Status: Neue Eingabe" 'Zustand ändern
    37. lblzustand.Caption = Zustand 'Zustand ausgeben
    38. cmdloeschen.Enabled = False 'Button deaktivieren
    39. cmdaendern.Enabled = False 'Button deaktivieren
    40. cmdhinzu.Enabled = True 'Button aktivieren
    41. txtnummer.Enabled = True 'Textfeld aktivieren
    42. txtplz.Enabled = True 'Textfeld aktivieren
    43. txtname.Enabled = True 'Textfeld aktivieren
    44. txtnummer.Text = "" 'Textfeld leeren
    45. txtplz.Text = "" 'Textfeld leeren
    46. txtname.Text = "" 'Textfeld leeren
    47. End If
    48. End Sub
    49. Private Sub Form_Load() 'Programmstart
    50. Zustand = "Status: Neue Eingabe" 'Zustand festlegen
    51. cmdloeschen.Enabled = False 'Button deaktivieren
    52. cmdaendern.Enabled = False 'Button deaktivieren
    53. Zaehler = 1 'Zähler auf 1 setzen
    54. End Sub
    55. Private Sub LstAusgabe_Click()
    56. Dim pos As Integer 'Varibale deklarieren
    57. If lstausgabe.ListIndex = -1 Then 'If-Anweisung starten
    58. Else
    59. txtnummer.Enabled = True 'Textfeld freigeben
    60. txtplz.Enabled = True 'Textfeld freigeben
    61. txtname.Enabled = True 'Textfeld freigeben
    62. pos = lstausgabe.ListIndex + 1 'Listindex um 1 erhöhen
    63. txtnummer.Text = Zahlenarray(pos) 'Der Variablen den Inhalt der anderen Variablen zuordenen
    64. txtname.Text = Namenarray(pos) 'Der Variablen den Inhalt der anderen Variablen zuordenen
    65. txtplz.Text = Plzarray(pos) 'Der Variablen den Inhalt der anderen Variablen zuordenen
    66. End If
    67. End Sub
    68. Private Sub ArrayInListbox()
    69. 'Array in Listbox ausgeben
    70. Dim i As Integer
    71. For i = 1 To Zaehler - 1
    72. lstausgabe.AddItem Zahlenarray(i) & " ; " & Plzarray(i) & " ; " & Namenarray(i)
    73. Next
    74. End Sub
    75. Private Function Doppeleintrag(Feld() As Single, anz As Integer, Eintrag As Single) As Boolean
    76. 'Funktion untersucht ein Array, ob Eintrag schon vorhanden
    77. Dim i As Integer
    78. Dim doppelt As Boolean
    79. doppelt = False
    80. i = 1
    81. Do While i <= anz And Not doppelt
    82. doppelt = Feld(i) = Eintrag
    83. i = i + 1
    84. Loop
    85. Doppeleintrag = doppelt
    86. End Function
    87. Private Sub txtname_Change()
    88. If IsNumeric(txtname.Text) = False Then 'If-Anweisung starten, prüfen ob die ersten Eingabe eine Zahl ist
    89. Namen = txtname.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
    90. Else
    91. MsgBox "Bitte geben Sie erst einen Buchstaben ein!", , "Hinweis" 'Hinweis ausgeben
    92. txtname.Text = "" 'Textfeld leeren
    93. End If
    94. End Sub
    95. Private Sub txtnummer_Change()
    96. If txtnummer.Text = "" Then Exit Sub
    97. If Mid(txtnummer.Text, Len(txtnummer.Text), 1) = "," Then
    98. txtnummer.Text = Mid(txtnummer.Text, 1, (Len(txtnummer.Text) - 1))
    99. txtnummer.SelStart = Len(txtnummer.Text)
    100. MsgBox "Bei der Kundennummer sind '','' und ''.'' nicht zulässig", , "Hinweis"
    101. End If
    102. If txtnummer.Text = "" Then Exit Sub
    103. If Mid(txtnummer.Text, Len(txtnummer.Text), 1) = "." Then
    104. txtnummer.Text = Mid(txtnummer.Text, 1, (Len(txtnummer.Text) - 1))
    105. txtnummer.SelStart = Len(txtnummer.Text)
    106. MsgBox "Bei der Kundennummer sind '','' und ''.'' nicht zulässig", , "Hinweis"
    107. End If
    108. If IsNumeric(txtnummer.Text) Then
    109. Nummer = txtnummer.Text
    110. Else
    111. MsgBox "Es nur Zahlen zulässig", , "Hinweis"
    112. txtnummer.Text = ""
    113. End If
    114. End Sub
    115. Private Sub txtplz_Change()
    116. If txtplz.Text = "" Then Exit Sub
    117. If Mid(txtplz.Text, Len(txtplz.Text), 1) = "," Then
    118. txtplz.Text = Mid(txtplz.Text, 1, (Len(txtplz.Text) - 1))
    119. txtplz.SelStart = Len(txtplz.Text)
    120. MsgBox "Bitte trennen Sie PLZ und Ort mit ''/'' !Danke", , "Hinweis"
    121. End If
    122. If txtplz.Text = "" Then Exit Sub
    123. If Mid(txtplz.Text, Len(txtplz.Text), 1) = "." Then
    124. txtplz.Text = Mid(txtplz.Text, 1, (Len(txtplz.Text) - 1))
    125. txtplz.SelStart = Len(txtplz.Text)
    126. MsgBox "Bitte trennen Sie PLZ und Ort mit ''/'' !Danke", , "Hinweis"
    127. End If
    128. End Sub


    Ich habe schon einige Sache probiert. Bekomme es aber leider mal wieder nicht ohne Hilfe hin.

    Bei der Suche habe ich leider auch nichts passenedes gefunden.

    danke schonmal
    gruß

    Edit by Agent: VB-Tag eingefügt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Agent“ ()

    Wenn du eine Datenbank nutzt, wird automatisch gespeichert.
    Wenn du keine Datenbank nutzen möchtest, könntest du nach jeder Änderung die Routine zum Speichern aufrufen, oder in Form_query_unload die Routine zum speichern aufrufen. Dieses Ereignis tritt immer beim Beenden des Programmes auf. Beim Starten des Programmes könntest du in der Sub Main, oder falls du mit einer Form startest im Form_load Ereignis die Datei einlesen, bzw testen, ob sie exisitiert und wenn nicht, dann erstellen, wobei dieses auch in der Speicherroutine erfolgen kann.

    Ich würde aber mit einem Listview Element arbeiten, anstatt mit einer Listbox.
    Gruß
    Peterfido

    Keine Unterstützung per PN!