Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 14:21

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[VB.NET][TuT] Sequenziell eine Datei lesen und schreiben

Discussion on [VB.NET][TuT] Sequenziell eine Datei lesen und schreiben within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
[VB.NET][TuT] Sequenziell eine Datei lesen und schreiben

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
Quote:
Imports System.IO
Wir definieren die Strucktur einer Person:
Quote:
Private Structure Person
Dim vorName, nachName As String
Dim geburt As DateTime
Dim student As Boolean
End Structure
Einige globale Variablen:
Quote:
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:
Quote:
ReDim pListe(pmax - 1)
Datensätze Initalisieren:
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
Die Personaldatei wird gelesen (bzw. neu angelegt) und angezeigt:
Quote:
readFile()
anzeigen()
Anzeigen 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
Speichern eines Datensatzes:
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
Vorwä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
Rückwärts blättern:
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
Beenden:
Quote:
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:
Quote:
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):
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
Von den zahlreichen Methoden des BinaryReader verwenden wir nur ReadString und ReadBoolean:
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()
Nun auf umgekehrtem Weg den Arrayinhalt nacheinander (sequenziell) in die Datei schreiben:
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
Von den zahlreichen Überladungen der Write-Methode brauchen wir nur die für die Datentypen String und Boolean:
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
Beim Schließen des Formulares wird das FormClosing-Event ausgelöst. Wir verwenden es,
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


Virustotal
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.
Sedrika is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[TuT] Ini lesen & schreiben
02/04/2011 - AutoIt - 16 Replies
Hallo liebe Com, Da mir zurzeit auffällt das viele probleme mit dem schreiben bzw. lesen von ini's haben, dachte ich mir ich schreibe hier ein kleines tutorial wie man ini benutzt. ich weiß da gibt es schon eins von shadow992 (bester mann :p), aber ich versuche hier nur spezifiesch auf ini's einzugehen! Nun stellt sich die erste frage, was ist denn eine ini datei? hier ein auszug von dem was in wikipedia steht:
[Visual C#] Dieses Zeichen: " in eine .txt datei schreiben
05/04/2010 - .NET Languages - 2 Replies
Hallo=) Ich habe das Problem das ich einen Text in eine .txt schreiben will myWriter.Write("item_id=""); myWriter.Write(x); myWriter.Write("", type:");
SUCHE HILFE!!!! bitte lesen & was dazu schreiben
01/15/2010 - Metin2 Private Server - 2 Replies
Hallo Leudz Ich habe immer noch mein Prob mit der dt. exe für meinen hamachi p-server, es will mir einfach nicht gelingen und desshalb bitte ich euch, mir zu helfen! meine Hamachi Nr: 5.245.94.170 brauche dt. exe für 2007 Ordner
.Bin Datei lesen?
09/30/2009 - General Coding - 14 Replies
Hallo! Ich habe ein Problem und zwar das ich habe eine .bin datei wenn ich diese mit Iso Buster öffne erhalte ich zwar die Datei und kann sie lesen aber da sind dann sehr viele zeichen! Kann mri vllt wer helfen?
Eine nette Datei vom kaliber .bat und eine Frage
07/01/2006 - Tutorials - 9 Replies
Moin, ich hab da mal eine schöne .bat datei erstellt die sich in den autostart setzt und den rechner herunterfährt.. aber wie schaffe ich es das es im systemstart ist? das wär doch viel interessanter die datei gibts hier:



All times are GMT +1. The time now is 14:21.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.