Die Projekt Datei ist schon mit Visual Basic 2008 benutzbar.
================================================== ==
In diesem Tutorial zeige ich euch, wie wir aus einer datei lesen und diese schreiben.
===================================
===================================
•Was wir brauchen
- Label1 (BackColor = Control, BorderStyle = Fixed3D, AutoSize = False)
- Label2 (Text = Nr)
- Label3 (Text = Vorname)
- Label4 (Text = Nachname)
- Label5 (Text = geboren am)
- Checkbox1 (Text = Student)
- Button1 (Text = >)
- Button2 (Text = <)
- Button3 (Text = Beenden)
===================================
===================================
[Only registered and activated users can see links. Click Here To Register...]
===================================
===================================
Als erstes brauchen wir den System.IO
Diesen schreiben wir in unseren code über der Public Class Form1
Inhalt in das Array (falls die Datei nicht vorhanden ist, wird sie neu angelegt):
um den Arrayinhalt automatisch zu sichern:
===================================
Hier ist nochmal der Gesamte SourceCode:
===================================
Hier könnt ihr das Projekt downloaden.
Download
[Only registered and activated users can see links. Click Here To Register...]
Virustotal
[Only registered and activated users can see links. Click Here To Register...] Ergebnis (1/41) Das aber auch nur weil es ein archiv ist.
===================================
===================================
Bemerkung:
===================================
Credits: Sedrika
PS: Bei fragen könnt ihr sie direkt hier stellen.
PSS: Ich habe diesen Code auch in meinem GM Tool v4 drinne nur etwas verändert.
================================================== ==
In diesem Tutorial zeige ich euch, wie wir aus einer datei lesen und diese schreiben.
===================================
===================================
•Was wir brauchen
- Label1 (BackColor = Control, BorderStyle = Fixed3D, AutoSize = False)
- Label2 (Text = Nr)
- Label3 (Text = Vorname)
- Label4 (Text = Nachname)
- Label5 (Text = geboren am)
- Checkbox1 (Text = Student)
- Button1 (Text = >)
- Button2 (Text = <)
- Button3 (Text = Beenden)
===================================
===================================
[Only registered and activated users can see links. Click Here To Register...]
===================================
===================================
Als erstes brauchen wir den System.IO
Diesen schreiben wir in unseren code über der Public Class Form1
Wir definieren die Strucktur einer Person:Quote:
Imports System.IO
Einige globale Variablen:Quote:
Private Structure Person
Dim vorName, nachName As String
Dim geburt As DateTime
Dim student As Boolean
End Structure
Beim Laden des Formulares wird das Personalarray angelegt und mit 10 Dummy-Personen gefüllt:Quote:
Private pmax As Integer = 10 'Maximale Anzahl Personen
Private pListe() As Person ' Statisches Array aus Structurvariablen
Private pos As Integer = 0 'Positionzähler
Datensätze Initalisieren:Quote:
ReDim pListe(pmax - 1)
Die Personaldatei wird gelesen (bzw. neu angelegt) und angezeigt:Quote:
For i As Integer = 0 To pListe.Length - 1
pListe(i).vorName = String.Empty
pListe(i).nachName = String.Empty
pListe(i).geburt = Convert.ToDateTime("1.1.1900")
pListe(i).student = False
Next i
Anzeigen eines Datensatzes:Quote:
readFile()
anzeigen()
Speichern eines Datensatzes:Quote:
Private Sub anzeigen()
Label1.Text = (pos + 1).ToString()
TextBox1.Text = pListe(pos).vorName
TextBox2.Text = pListe(pos).nachName
' Typkonvertierung beachten!
TextBox3.Text = pListe(pos).geburt.ToShortDateString()
CheckBox1.Checked = pListe(pos).student
End Sub
Vorwärts blättern:Quote:
Private Sub speichern()
pListe(pos).vorName = TextBox1.Text
pListe(pos).nachName = TextBox2.Text
' Typkonvertierung beachten!
pListe(pos).geburt = Convert.ToDateTime(TextBox3.Text)
pListe(pos).student = CheckBox1.Checked
End Sub
Rückwärts blättern:Quote:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If pos < pmax - 1 Then ' Anschlagkontrolle
speichern()
pos += 1
anzeigen()
End If
End Sub
Beenden:Quote:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If pos > 0 Then ' Anschlagkontrolle
speichern()
pos -= 1
anzeigen()
End If
End Sub
Als erstes fügen wir das hier ein:Quote:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.Close()
End Sub
Die folgende Methode liest die Datei sequenziell und füllt derenQuote:
Private pfad As String = "Personen.dat"
Inhalt in das Array (falls die Datei nicht vorhanden ist, wird sie neu angelegt):
Von den zahlreichen Methoden des BinaryReader verwenden wir nur ReadString und ReadBoolean:Quote:
Private Sub readFile()
Dim rStream As New FileStream(pfad, FileMode.OpenOrCreate, FileAccess.Read)
Dim binReader As New BinaryReader(rStream)
If rStream.Length > 0 Then
For i As Integer = 0 To pmax - 1
Nun auf umgekehrtem Weg den Arrayinhalt nacheinander (sequenziell) in die Datei schreiben:Quote:
pListe(i).vorName = binReader.ReadString()
pListe(i).nachName = binReader.ReadString()
pListe(i).geburt = Convert.ToDateTime(binReader.ReadString())
pListe(i).student 0 binReader.ReadBoolean()
Next i
End If
binReader.Close()
rStream.Close()
Von den zahlreichen Überladungen der Write-Methode brauchen wir nur die für die Datentypen String und Boolean:Quote:
Private Sub writeFile()
Dim wStream As New FileStream(pfad, FileMode.OpenOrCreate, FileAccess.Write)
Dim binWriter As New BinaryWriter(wStream)
For i As Integer = 0 To pmax - 1
Beim Schließen des Formulares wird das FormClosing-Event ausgelöst. Wir verwenden es,Quote:
binWriter.Write(pListe(i).vorName)
binWriter.Write(pListe(i).nachName)
binWriter.Write(pListe(i).geburt.ToShortDateString ())
binWriter.Write(pListe(i).student)
Next i
binWriter.Flush() ' Puffer => Disk
binWriter.Close()
wStream.Close()
End Sub
um den Arrayinhalt automatisch zu sichern:
===================================Quote:
Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
speichern() ' aktuellen Datensatz im Array sichern
writeFile() ' Arrayinhalt in Datei abspeichern
End Sub
===================================
Hier ist nochmal der Gesamte SourceCode:
===================================Quote:
Imports System.IO
Public Class Form1
Private Structure Person ' Struktur definieren
Dim vorName, nachName As String
Dim geburt As DateTime
Dim student As Boolean
End Structure
Private pmax As Integer = 10 ' maximale Anzahl Personen
Private pListe() As Person ' statisches Array aus Strukturvariablen
Private pos As Integer = 0 ' Positionszähler
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ReDim pListe(pmax - 1)
' Datensätze initialisieren:
For i As Integer = 0 To pListe.Length - 1
pListe(i).vorName = String.Empty
pListe(i).nachName = String.Empty
pListe(i).geburt = Convert.ToDateTime("1.1.1900")
pListe(i).student = False
Next i
readFile() ' Datei lesen bzw. neu erzeugen
anzeigen()
End Sub
' Anzeigen eines Datensatzes:
Private Sub anzeigen()
Label1.Text = (pos + 1).ToString()
TextBox1.Text = pListe(pos).vorName
TextBox2.Text = pListe(pos).nachName
' Typkonvertierung beachten!
TextBox3.Text = pListe(pos).geburt.ToShortDateString()
CheckBox1.Checked = pListe(pos).student
End Sub
' Speichern eines Datensatzes:
Private Sub speichern()
pListe(pos).vorName = TextBox1.Text
pListe(pos).nachName = TextBox2.Text
' Typkonvertierung beachten!
pListe(pos).geburt = Convert.ToDateTime(TextBox3.Text)
pListe(pos).student = CheckBox1.Checked
End Sub
' vorwärts blättern:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If pos < pmax - 1 Then ' Anschlagkontrolle
speichern()
pos += 1
anzeigen()
End If
End Sub
' rückwärts blättern:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If pos > 0 Then ' Anschlagkontrolle
speichern()
pos -= 1
anzeigen()
End If
End Sub
' Beenden
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.Close()
End Sub
' ------------------------------------- Dateioperationen ----------------------------------------
Private pfad As String = "Personen.dat"
Private Sub readFile()
Dim rStream As New FileStream(pfad, FileMode.OpenOrCreate, FileAccess.Read)
Dim binReader As New BinaryReader(rStream)
If rStream.Length > 0 Then ' nicht bei neu erzeugter Datei
For i As Integer = 0 To pmax - 1
pListe(i).vorName = binReader.ReadString()
pListe(i).nachName = binReader.ReadString()
pListe(i).geburt = Convert.ToDateTime(binReader.ReadString())
pListe(i).student = binReader.ReadBoolean()
Next i
End If
binReader.Close()
rStream.Close()
End Sub
Private Sub writeFile()
Dim wStream As New FileStream(pfad, FileMode.OpenOrCreate, FileAccess.Write)
Dim binWriter As New BinaryWriter(wStream)
For i As Integer = 0 To pmax - 1
binWriter.Write(pListe(i).vorName)
binWriter.Write(pListe(i).nachName)
binWriter.Write(pListe(i).geburt.ToShortDateString ())
binWriter.Write(pListe(i).student)
Next i
binWriter.Flush() ' Puffer => Disk
binWriter.Close()
wStream.Close()
End Sub
Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
speichern() ' aktuellen Datensatz im Array sichern
writeFile() ' Arrayinhalt in Datei abspeichern
End Sub
End Class
===================================
Hier könnt ihr das Projekt downloaden.
Download
[Only registered and activated users can see links. Click Here To Register...]
Virustotal
[Only registered and activated users can see links. Click Here To Register...] Ergebnis (1/41) Das aber auch nur weil es ein archiv ist.
===================================
===================================
Bemerkung:
===================================Quote:
-Die Personen.dat Datei wird beim Starten der Anwendung geladen.
- Ein neuer oder editerter eintrag wird erst nach dem umblättern in die Array übernommen.
===================================
Credits: Sedrika
PS: Bei fragen könnt ihr sie direkt hier stellen.
PSS: Ich habe diesen Code auch in meinem GM Tool v4 drinne nur etwas verändert.