Archief - VB.NET klasse wegschrijven in een txt

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

fat-beavis

Legacy Member
Hallo iedereen :)

Ik volg al een half jaarke cursus aan de syntra west voor analist programmeur.
Ik begin me wel ferm te amuseren dat ik zo eens thuis wat probeer een eigen programma te schrijven.

nuja On topic :

Ik heb 2 classes en die bevat de klant gegevens en de andere bevat een collection ( inherits collectionbase )

ik wil de streamreader en writer gebruiken om mijn klantgegevens weg te schrijven in een txt file ( c:\klanten.txt )
Ik wil dit doen omdat mijn kennis van databases enzo voorlopig nog beperkt is

dit heb ik voor de STREAMWRITER :

'sub om de listbox op te slaan samen met de gegevens in een txt bestand
Private Sub Savetxt()
Using Swriter As StreamWriter = New StreamWriter("c:\klanten.txt")
For Each klant As clsKlant In colKlanten
Swriter.WriteLine(klant.StrKlantNaam)
Swriter.WriteLine(klant.StrKlantVoornaam)
Swriter.WriteLine(klant.StrKlantTelefoon)
Swriter.WriteLine(klant.StrKlantEmail)
Next
End Using
End Sub

Voor de reader weet ik immers niet waar te beginnen
Ik veronderstel dat ik met een lus zal moeten werken die 4 regels zal lezen ( 4 regels = 1 klant ) en zo zal moeten werken met readToEnd, maar om ze dan in die klasse te steken ( collection )
dit heb ik al maar ik zal er wel compleet naast zitten

Dim Sreader As StreamReader = File.OpenText("c:\klanten.txt")
Dim strline As String
Dim strlineVoornaam As String
Dim strlineEmail As String
Dim strlineTelefoon As String
Dim intaantal As Short = 0
Dim eenKlant As New clsKlant
Do
strline = Sreader.ReadLine
eenKlant.StrKlantNaam = strline
Loop Until strline Is Nothing
Sreader.Close()

iemand een idee hoe ik dus mijn klantgegevens rechtstreeks in mijn collection kan steken

(Ps zoveel kennis heb ik er nog niet van plz be gentle :) )

fat-beavis

Legacy Member
EDIT :
Na wat puzzelen heb ik hierop toch al zelf kunnen komen


Private Sub Laadtxt()
Dim Sreader As StreamReader = File.OpenText("c:\klanten.txt")
Dim intaantal As Short = 0
Dim intaantal2 As Short = 0
While Not Sreader.ReadLine Is Nothing
Dim eenKlant As New clsKlant
For intaantal = 0 To 3
eenKlant.StrKlantNaam = Sreader.ReadLine
intaantal += 1
eenKlant.StrKlantVoornaam = Sreader.ReadLine
intaantal += 1
eenKlant.StrKlantEmail = Sreader.ReadLine
intaantal += 1
eenKlant.StrKlantTelefoon = Sreader.ReadLine
Next
colKlanten.add(eenKlant)
lstcostumers.Items.Add(eenKlant.NaamEnVoornaam)
End While
Sreader.Close()


End Sub



Maar hij laad slechts de naam , voornaam en email , de telefoon laad em niet om 1 of andere reden , ( for intaantal = 0 to 4 en dergelijke ook al geprobeerd )

Parnakra

Legacy Member
Code:
Private Sub Laadtxt()
   Dim Sreader As StreamReader = File.OpenText("c:\klanten.txt")
   While Not Sreader.ReadLine Is Nothing
      Dim eenKlant As New clsKlant
      eenKlant.StrKlantNaam = Sreader.ReadLine
      eenKlant.StrKlantVoornaam = Sreader.ReadLine
      eenKlant.StrKlantEmail = Sreader.ReadLine
      eenKlant.StrKlantTelefoon = Sreader.ReadLine
      colKlanten.add(eenKlant)
      lstcostumers.Items.Add(eenKlant.NaamEnVoornaam)
   End While
   Sreader.Close()
End Sub

nameless

Legacy Member
Wat ik zou doen om weg te schrijven is alle gegevens van 1 klant op 1 lijn wegschrijven met een speciaal teken tussen bv ; .
Ook niet vergeten je writer te sluiten.

Using Swriter As StreamWriter = New StreamWriter("c:\klanten.txt")
For Each klant As clsKlant In colKlanten
Swriter.WriteLine(klant.StrKlantNaam & ";" & klant.StrKlantVoornaam & ";" &klant.StrKlantTelefoon & ";" & klant.StrKlantEmail)
Next
Swriter.Close()

Om te lezen zou ik dan dit doen:

Dim sr As StreamReader = New StreamReader("c:\klanten.txt")
Dim line As String
dim strOpvang() as String
Do
line = sr.ReadLine()
strOpvang=line.split(";")
lstcostumers.Items.Add(New clsKlant(strOpvang(0),strOpvang(1),strOpvang(2),strOpvang(3))
Loop Until line Is Nothing
sr.Close()


Als je vragen er vragen bij hebt stel ze maar.

pieta

Legacy Member
zoals ze hierboven zeggen, ne csv of xml kan al wa duidelijker zijn.

nog ff een opmerking, ge hebt blijkbaar nog nie echt leren debuggen?

zoniet: zet hier eens een breakpoint en doe dan telkens step into en dan zult ge zien wat er 'mis' is met dit stuk code..

Code:
While Not Sreader.ReadLine Is Nothing
Dim eenKlant As New clsKlant
For intaantal = 0 To 3
eenKlant.StrKlantNaam = Sreader.ReadLine
intaantal += 1
eenKlant.StrKlantVoornaam = Sreader.ReadLine
intaantal += 1
eenKlant.StrKlantEmail = Sreader.ReadLine
intaantal += 1
eenKlant.StrKlantTelefoon = Sreader.ReadLine
Next

nameless

Legacy Member
pieta zei:
zoals ze hierboven zeggen, ne csv of xml kan al wa duidelijker zijn.

Ik denk dat csv toch iets makkelijker werkt voor een beginner, aangezien xml een beetje complexer is.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan