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)
===================================
===================================

===================================
===================================
Als erstes brauchen wir den System.IO
Diesen schreiben wir in unseren code über der Public Class Form1
Wir definieren die Strucktur einer Person:
Einige globale Variablen:
Beim Laden des Formulares wird das Personalarray angelegt und mit 10 Dummy-Personen gefüllt:
Datensätze Initalisieren:
Die Personaldatei wird gelesen (bzw. neu angelegt) und angezeigt:
Anzeigen eines Datensatzes:
Speichern eines Datensatzes:
Vorwärts blättern:
Rückwärts blättern:
Beenden:
Als erstes fügen wir das hier ein:
Die folgende Methode liest die Datei sequenziell und füllt deren
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:
Nun auf umgekehrtem Weg den Arrayinhalt nacheinander (sequenziell) in die Datei schreiben:
Von den zahlreichen Überladungen der Write-Methode brauchen wir nur die für die Datentypen String und Boolean:
Beim Schließen des Formulares wird das FormClosing-Event ausgelöst. Wir verwenden es,
um den Arrayinhalt automatisch zu sichern:
===================================
===================================
Hier ist nochmal der Gesamte SourceCode:
===================================
===================================
Hier könnt ihr das Projekt downloaden.
Download
Sequenzielle Datei lesen und schreiben.rar
Virustotal
Klickmich 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)
===================================
===================================

===================================
===================================
Als erstes brauchen wir den System.IO
Diesen schreiben wir in unseren code über der Public Class Form1
Imports System.IO
Wir definieren die Strucktur einer Person:
Private Structure Person
Dim vorName, nachName As String
Dim geburt As DateTime
Dim student As Boolean
End Structure
Einige globale Variablen:
Private pmax As Integer = 10 'Maximale Anzahl Personen
Private pListe() As Person ' Statisches Array aus Structurvariablen
Private pos As Integer = 0 'Positionzähler
Beim Laden des Formulares wird das Personalarray angelegt und mit 10 Dummy-Personen gefüllt:
ReDim pListe(pmax - 1)
Datensätze Initalisieren:
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
Die Personaldatei wird gelesen (bzw. neu angelegt) und angezeigt:
readFile()
anzeigen()
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
Als erstes fügen wir das hier ein:
Private pfad As String = "Personen.dat"
Die folgende Methode liest die Datei sequenziell und füllt deren
Inhalt in das Array (falls die Datei nicht vorhanden ist, wird sie neu angelegt):
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
Von den zahlreichen Methoden des BinaryReader verwenden wir nur ReadString und ReadBoolean:
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()
Nun auf umgekehrtem Weg den Arrayinhalt nacheinander (sequenziell) in die Datei schreiben:
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
Von den zahlreichen Überladungen der Write-Methode brauchen wir nur die für die Datentypen String und Boolean:
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
Beim Schließen des Formulares wird das FormClosing-Event ausgelöst. Wir verwenden es,
um den Arrayinhalt automatisch zu sichern:
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:
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
Sequenzielle Datei lesen und schreiben.rar
Virustotal
Klickmich Ergebnis (1/41) Das aber auch nur weil es ein archiv ist.
===================================
===================================
Bemerkung:
-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.