Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0200: Inhalt von List-, Text- und ComboBoxen speichern

 von 

Beschreibung 

Immer wieder eine beliebte Frage im Forum: Das speichern von Inhalten der List-, Text- und ComboBox bei Beendigung einer Anwendung und deren erneutes Einlesen bei Start. Hier ein Vorschlag diese Prozedur via Text-Dateien erledigen zu lassen.

Update: Nun werden keine Leerzeilen mehr an das Ende der Dateien geschrieben.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [3,56 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Textfeld "Text1"
' Steuerelement: Kombinationsliste "Combo1"
' Steuerelement: Listen-Steuerelement "List1"

Option Explicit

Private Sub Command1_Click()
  Unload Me
End Sub

Private Sub Form_Initialize()
    Dim aa As String
    Dim FN As Integer
    
    If Len(Dir$(App.Path & "\Text1.txt", vbNormal)) > 0 Then
      FN = FreeFile
      Open App.Path & "\Text1.txt" For Input As #FN
        Text1.Text = Input$(LOF(FN), FN)
      Close FN
    End If
    
    List1.Clear
    If Len(Dir$(App.Path & "\List1.txt", vbNormal)) > 0 Then
      FN = FreeFile
      Open App.Path & "\List1.txt" For Input As #FN
        Do While Not EOF(FN)
          Input #FN, aa
          List1.AddItem aa
        Loop
      Close FN
    End If

    Combo1.Clear
    If Len(Dir$(App.Path & "\Combo1.txt", vbNormal)) > 0 Then
      FN = FreeFile
      Open App.Path & "\Combo1.txt" For Input As #FN
        Do While Not EOF(FN)
          Input #FN, aa
          Combo1.AddItem aa
        Loop
      Close FN
      
      If Combo1.ListCount > 0 Then Combo1.ListIndex = 0
    End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Dim FN As Integer
    Dim x As Integer
  
    FN = FreeFile
    Open App.Path & "\Text1.txt" For Output As #FN
      Print #FN, Text1.Text;
    Close FN
    
    FN = FreeFile
    Open App.Path & "\List1.txt" For Output As #FN
      For x = 0 To List1.ListCount - 1
        Print #FN, List1.List(x)
      Next x
    Close FN
    
    FN = FreeFile
    Open App.Path & "\Combo1.txt" For Output As #FN
      For x = 0 To Combo1.ListCount - 1
        Print #FN, Combo1.List(x)
      Next x
    Close FN
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 3 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Timo Schreiber am 10.10.2002 um 11:03

Is weniger meine Meinung, eher 'ne Frage.

Bezieht sich dieser Source eigentlich auf ein einzeiliges Textfeld oder kann dieses Textfeld auch Mehrzeilig sein?

MfG

Kommentar von Markus Unterkofler am 06.04.2002 um 15:45

Ich hab in meiner Liste Datum und Uhrzeit und das Programm speichert es auch so richtig. Wenn ich aber das ganze einlese kommen da komische Zahlen. Das liegt wahrscheinlich an den Punkten und Doppelpunkten von den Einträgen. Weiß jemand rat?

Kommentar von Julien Haber am 10.02.2002 um 14:12

Kann mir einer bitte ein Beispiel schicken,wo der Inhalt von mehreren Labels(auf demselben Formular) in eine Textdatei gespeichert und wieder richtig ausgelesen werden.
Weil ich schaff es nicht dass beim Laden des Programms wieder der richtige Text im richtigen Label steht.
Hoffe dass ihr mich versteht.