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:
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
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
- Private Zustand As String 'Variable deklarieren
- Private Const MAXANZ = 100 'Anzahl der erlaubten Einträge
- Private Nummer As Single 'Variable deklarieren
- Private Namen As String 'Variable deklarieren
- Private Postleitzahl As String 'Variable deklarieren
- Private Zaehler As Integer 'Variable deklarieren
- Private Zahlenarray(1 To MAXANZ) As Single 'Array deklarieren
- Private Namenarray(1 To MAXANZ) As String 'Array deklarieren
- Private Plzarray(1 To MAXANZ) As String 'Array deklarieren
- Private pos As Integer 'Variable deklarieren
- Private Sub CmdHinzu_Click() 'Butto Hinzufügen
- Dim Nummer As Single 'Variable deklarieren
- Dim pos As Integer 'Variable deklarieren
- If IsNumeric(txtnummer.Text) And Not txtname.Text = "" Then 'Starten der IF-Anweisung
- Nummer = txtnummer.Text 'Der Variablen Nummer den Inhalt des Textfeldes zuordnen
- If Zaehler <= MAXANZ Then 'IF Anweisung starte wenn die maximale Anzahl noch nicht erreicht ist
- If Not Doppeleintrag(Zahlenarray, Zaehler - 1, Nummer) Then 'Starten von Subroutine
- Namen = txtname.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
- Nummer = txtnummer.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
- Postleitzahl = txtplz.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
- lstausgabe.AddItem txtnummer.Text & " ; " & txtname.Text & " ; " & txtplz.Text 'Ausgabe in Listbox
- Zahlenarray(Zaehler) = Nummer 'Der Variablen den Inhalt der anderen Variablen zuordenen
- Plzarray(Zaehler) = Postleitzahl 'Der Variablen den Inhalt der anderen Variablen zuordenen
- Namenarray(Zaehler) = Namen 'Der Variablen den Inhalt der anderen Variablen zuordenen
- txtnummer.SetFocus
- txtnummer.Text = "" 'Textfeld leeren
- txtplz.Text = "" 'Textfeld leeren
- txtname.Text = "" 'Textfeld leeren
- Zaehler = Zaehler + 1 'Zaehler um einen erhöhen
- Else
- MsgBox "Diese Kundennummer ist schon vorhanden", , "Hinweis" 'Hinweis ausgeben
- End If
- Else
- MsgBox "Das Eingabefeld ist voll!", , "Hinweis" 'Hinweis ausgeben
- Zustand = "Status: vorhandene Eingabe bearbeiten" 'Variable zuordnen
- End If
- Else
- MsgBox "Es muss eine Kundennummer und ein Name eingegeben sein!", , "Hinweis" 'Hinweis ausgeben
- End If
- End Sub
- Private Sub cmdaendern_Click()
- Dim pos As Integer 'Variable deklarieren
- If txtnummer.Text = "" Or txtplz.Text = "" Or txtname.Text = "" Then 'If-Anweisung starten
- MsgBox "Bitte prüfen Sie die Eingabe", , "Hinweis" 'Hinweis ausgebe
- Else
- pos = lstausgabe.ListIndex + 1 'Listindex um 1 erhöhen
- Namen = txtname.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
- Nummer = txtnummer.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
- Postleitzahl = txtplz.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
- lstausgabe.List(lstausgabe.ListIndex) = txtnummer.Text & " ; " & txtname.Text & " ; " & txtplz.Text 'Ausgabe in Listbox
- Zahlenarray(pos) = Nummer 'Der Variablen den Inhalt der anderen Variablen zuordenen
- Plzarray(pos) = Postleitzahl 'Der Variablen den Inhalt der anderen Variablen zuordenen
- Namenarray(pos) = Namen 'Der Variablen den Inhalt der anderen Variablen zuordenen
- End If
- End Sub
Visual Basic-Quellcode
- Private Sub CmdLoeschen_Click() 'Löschen Button
- Dim i As Integer 'Variable deklarieren
- If lstausgabe.ListIndex = -1 Then ' Kein Eintrag markiert
- MsgBox "Bitte einen Eintrag markieren!", , "Hinweis" 'Hinweis ausgeben
- Else
- If MsgBox("Wirklich Löschen?", vbYesNo, "Hinweis") = vbYes Then 'Hinweis ausgeben
- pos = lstausgabe.ListIndex + 1 'Listindex um 1 erhöhen
- For i = pos To Zaehler - 1 'Array zusammenschieben
- Zahlenarray(i) = Zahlenarray(i + 1)
- Plzarray(i) = Plzarray(i + 1)
- Namenarray(i) = Namenarray(i + 1)
- Next
- Zaehler = Zaehler - 1 'Anzahl um 1 verringern
- lstausgabe.Clear 'Liste löschen
- ArrayInListbox 'Aufruf einer Subroutine
- txtnummer.Text = "" 'Textfeld leeren
- txtplz.Text = "" 'Textfeld leeren
- txtname.Text = "" 'Textfeld leeren
- End If
- End If
- End Sub
- Private Sub CmdZustand_Click()
- If Zustand = "Status: Neue Eingabe" Then 'If-Anweisung
- Zustand = "Status: vorhandene Eingabe bearbeiten" 'Zustand ändern
- lblzustand.Caption = Zustand 'Zustand ausgeben
- cmdloeschen.Enabled = True 'Button aktivieren
- cmdaendern.Enabled = True 'Button aktivieren
- cmdhinzu.Enabled = False 'Button deaktivieren
- txtnummer.Enabled = False 'Textfeld deaktivieren
- txtplz.Enabled = False 'Textfeld deaktivieren
- txtname.Enabled = False 'Textfeld deaktivieren
- txtnummer.Text = "" 'Textfeld leeren
- txtplz.Text = "" 'Textfeld leeren
- txtname.Text = "" 'Textfeld leeren
- Else
- Zustand = "Status: Neue Eingabe" 'Zustand ändern
- lblzustand.Caption = Zustand 'Zustand ausgeben
- cmdloeschen.Enabled = False 'Button deaktivieren
- cmdaendern.Enabled = False 'Button deaktivieren
- cmdhinzu.Enabled = True 'Button aktivieren
- txtnummer.Enabled = True 'Textfeld aktivieren
- txtplz.Enabled = True 'Textfeld aktivieren
- txtname.Enabled = True 'Textfeld aktivieren
- txtnummer.Text = "" 'Textfeld leeren
- txtplz.Text = "" 'Textfeld leeren
- txtname.Text = "" 'Textfeld leeren
- End If
- End Sub
- Private Sub Form_Load() 'Programmstart
- Zustand = "Status: Neue Eingabe" 'Zustand festlegen
- cmdloeschen.Enabled = False 'Button deaktivieren
- cmdaendern.Enabled = False 'Button deaktivieren
- Zaehler = 1 'Zähler auf 1 setzen
- End Sub
- Private Sub LstAusgabe_Click()
- Dim pos As Integer 'Varibale deklarieren
- If lstausgabe.ListIndex = -1 Then 'If-Anweisung starten
- Else
- txtnummer.Enabled = True 'Textfeld freigeben
- txtplz.Enabled = True 'Textfeld freigeben
- txtname.Enabled = True 'Textfeld freigeben
- pos = lstausgabe.ListIndex + 1 'Listindex um 1 erhöhen
- txtnummer.Text = Zahlenarray(pos) 'Der Variablen den Inhalt der anderen Variablen zuordenen
- txtname.Text = Namenarray(pos) 'Der Variablen den Inhalt der anderen Variablen zuordenen
- txtplz.Text = Plzarray(pos) 'Der Variablen den Inhalt der anderen Variablen zuordenen
- End If
- End Sub
- Private Sub ArrayInListbox()
- 'Array in Listbox ausgeben
- Dim i As Integer
- For i = 1 To Zaehler - 1
- lstausgabe.AddItem Zahlenarray(i) & " ; " & Plzarray(i) & " ; " & Namenarray(i)
- Next
- End Sub
- Private Function Doppeleintrag(Feld() As Single, anz As Integer, Eintrag As Single) As Boolean
- 'Funktion untersucht ein Array, ob Eintrag schon vorhanden
- Dim i As Integer
- Dim doppelt As Boolean
- doppelt = False
- i = 1
- Do While i <= anz And Not doppelt
- doppelt = Feld(i) = Eintrag
- i = i + 1
- Loop
- Doppeleintrag = doppelt
- End Function
- Private Sub txtname_Change()
- If IsNumeric(txtname.Text) = False Then 'If-Anweisung starten, prüfen ob die ersten Eingabe eine Zahl ist
- Namen = txtname.Text 'Der Variablen den Inhalt des Textfeldes zuordnen
- Else
- MsgBox "Bitte geben Sie erst einen Buchstaben ein!", , "Hinweis" 'Hinweis ausgeben
- txtname.Text = "" 'Textfeld leeren
- End If
- End Sub
- Private Sub txtnummer_Change()
- If txtnummer.Text = "" Then Exit Sub
- If Mid(txtnummer.Text, Len(txtnummer.Text), 1) = "," Then
- txtnummer.Text = Mid(txtnummer.Text, 1, (Len(txtnummer.Text) - 1))
- txtnummer.SelStart = Len(txtnummer.Text)
- MsgBox "Bei der Kundennummer sind '','' und ''.'' nicht zulässig", , "Hinweis"
- End If
- If txtnummer.Text = "" Then Exit Sub
- If Mid(txtnummer.Text, Len(txtnummer.Text), 1) = "." Then
- txtnummer.Text = Mid(txtnummer.Text, 1, (Len(txtnummer.Text) - 1))
- txtnummer.SelStart = Len(txtnummer.Text)
- MsgBox "Bei der Kundennummer sind '','' und ''.'' nicht zulässig", , "Hinweis"
- End If
- If IsNumeric(txtnummer.Text) Then
- Nummer = txtnummer.Text
- Else
- MsgBox "Es nur Zahlen zulässig", , "Hinweis"
- txtnummer.Text = ""
- End If
- End Sub
- Private Sub txtplz_Change()
- If txtplz.Text = "" Then Exit Sub
- If Mid(txtplz.Text, Len(txtplz.Text), 1) = "," Then
- txtplz.Text = Mid(txtplz.Text, 1, (Len(txtplz.Text) - 1))
- txtplz.SelStart = Len(txtplz.Text)
- MsgBox "Bitte trennen Sie PLZ und Ort mit ''/'' !Danke", , "Hinweis"
- End If
- If txtplz.Text = "" Then Exit Sub
- If Mid(txtplz.Text, Len(txtplz.Text), 1) = "." Then
- txtplz.Text = Mid(txtplz.Text, 1, (Len(txtplz.Text) - 1))
- txtplz.SelStart = Len(txtplz.Text)
- MsgBox "Bitte trennen Sie PLZ und Ort mit ''/'' !Danke", , "Hinweis"
- End If
- 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“ ()