Opvragen van waarden uit een extern bestand.

Status
Niet open voor verdere reacties.

LittleDevill

Gebruiker
Lid geworden
29 mei 2007
Berichten
5
Beste lezer, (hopelijk oplosser)

Ik ben net begonnen met Visual Basic Express Edition 2005. Ik weet het, ik ben een
beetje te laat. Ik heb al enige kennis van PHP opgebouwd en ben er achter dat het in hele grote
lijnen allemaal samenvalt. Zoals bijvoorbeeld de variabelen, echo's/prints, if enz.

Nou heb ik in PHP bijvoorbeeld de include(); funtie vaak gebruikt om gegevens uit een bestand te laden
of een template eruit te halen.

Ik probeer nu een programma te maken waarin de gebruiker zijn voornaam, achternaam en bijvoorbeeld
leeftijd kan geven. Nou slaat het programma (in zijn eigen map) de gegevens op. En als je het programma
na dertijd weer opent dan je dan met een knop (openen waarschijnlijk) die file weer kunt openen zodat in
de textboxen (waar het hoort) de al eerder ingevulde gegevens komen te staan.

Ik hoop dat één van jullie hier een oplossing voor mij heeft. Let op ik heb niet zoveel verstand van de codes.
Dus probeer alles zoveel mogelijk uit te leggen a.u.b. alvast bedankt!

Met vriendelijke groet,
LittleDevill
 
Beste

Bij deze de oplossing voor uw probleem. Ikzelf ken niets van PHP, dus heb
maar de vrijheid genomen een oplossing te zoeken die mij het beste leek.
(Ik heb uw voorbeeld uitgewerkt: Voornaam, Achternaam en Leeftijd):

U kan volgende code gebruiken:

*** Code Verwijderd --> Zie verder in post !!! ***

Deze code wordt het best gelezen in VB.Net vermits is geen zin heb om kleurtjes toe te voegen :evil:

Grtz !!!
 
Laatst bewerkt:
Ok alles is gelukt. Of, alles is een groot woord. Ik heb de code zonder fouten kunnen importeren en heb er een .exe van gemaakt. Hij installeert hem en alles, maar dan....

Als ik wat invul, dan zegt hij Het bestand bestaat niet. Dat klopt want die heb ik niet
aangemaakt die wil ik aanmaken. In de code staan dan ook:

Code:
If Not File.Exists(path & "\data.dat") Then
            File.Create(path & "\data.dat")

Dus ik neem aan dat hij dat zelf moet aanmaken.

Dit doet hij dan waarschijnlijk niet, gelijk daarachter aan krijg ik een windows fout.
Unhandled Exception has occured in your application. If you click Continue, the application will ignore this error and attempt to continue. If you click Quit, the application will close immediately.


Object reference not set to an instance of an object.

In ieder geval, kun je me nog eens verder helpen.

Mijn dank is groot voor jou uitleg in de code! Netjes :thumb: :p
 
Probeer hem eens te laten runnen in Visual Basic zelf (het groene pijltje) dan geeft hij
wat meer informatie i.v.m. de fout.
Ik veronderstelde dat alles moest werken ... zal nu zelf ook eens proberen!

Er staat een fout in bovenstaande code --> zoek naar het blauw!!!


Heb het probleem gevonden
 
Laatst bewerkt:
Hierbij de oplossing van uw probleem (het eigenlijke probleem deed hem voor na de creatie van het bestand. VB wilde het bestand niet onmiddellijk vrijgeven, dus kon er
ook niets aan aangepast worden. Is nu opgelost!):

Code:
[COLOR="Red"]Imports System.IO[/COLOR]

Public Class Form1
    'Het pad waar de gegevens komen te staan
    Dim path As String = Application.StartupPath & "\Gegevens"

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'Eerst en vooral maken we een directory en bestand aan. Het pad
        'is gelijk aan het pad waar uw exe bestand staat met een submap
        '"Gegevens" en een bestand "data.dat"
        'De volgende 6 regels code bestaan eruit te controleren of alles bestaat
        'wat nodig is om de gegevens te kunnen wegschrijven (Anders Fouten!)
        If Not Directory.Exists(path) Then
            Directory.CreateDirectory(Application.StartupPath & "\Gegevens")
        End If
        If Not File.Exists(path & "\data.txt") Then
            File.Create(path & "\data.txt")
        End If
    End Sub

    Private Sub saveData()
        'Creatie van een StreamWriter --> Schrijft tekst weg naar een bestand
        Dim sw As New StreamWriter(Path & "\data.txt")
        'We schrijven de nodige gegevens weg naar het bestand. De "|" dient om de verschillende
        'gegevens van elkaar te onderscheiden, zodat bij het inlezen (zie loadData) de correcte
        'gegevens op de correcte plaats worden gezet
        sw.WriteLine(txtVoorNaam.Text & "|" & txtAchterNaam.Text & "|" & txtLeeftijd.Text)
        'StreamWriter afsluiten anders is het bestand niet toehankelijk.
        sw.Close()
        MessageBox.Show("Bestand Opgeslaan")
    End Sub

    Private Sub loadData()
        'Eerst controleren of het bestand wel bestaat, anders
        'kan er niets worden ingelezen en krijgen we fouten
        If Directory.Exists(path) And File.Exists(path & "\data.txt") Then
            'Ipv van een StreamWriter, nu een StreamReader --> werkt volgens
            'zelfde principe, maar dan omgekeerd :D
            Dim sr As New StreamReader(path & "\data.txt")
            'We lezen nu de eerste regel in van het bestand en splitsen waar dat
            'we de "|" gezet hebben bij saveData om dan de juiste gegevens in de juiste
            'tekstvakken te zetten
            Dim regel() As String = sr.ReadLine.Split("|")
            'Dit is nog een extra controle om te kijken of er niets fout is gegaan
            'bij het wegschrijven
            If regel.Length = 3 Then
                'Toekennen van de gegevens aan de tekstvakken
                txtVoornaam.Text = regel(0)
                txtAchternaam.Text = regel(1)
                txtLeeftijd.Text = regel(2)
            Else
                MessageBox.Show("Fout in bestand")
            End If
            sr.Close()
        Else
            MessageBox.Show("Bestand bestaat niet!")
        End If
    End Sub

    Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click
        loadData()
    End Sub
    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
        saveData()
    End Sub
End Class
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan