parameters d.m.v. tekstbestand

Status
Niet open voor verdere reacties.

bitchkoemer

Gebruiker
Lid geworden
3 aug 2006
Berichten
39
Hallo,

Wat bedoel ik hiermee, ik werk wel eens met Linux en daar gebruiken ze bijna altijd .cfg bestanden, gewone tekst bestanden waar allerlei configuratie parameters worden in geplaatst die tijdens het starten door de programma's worden ingelezen.

Nu had ik graag zoiets gelijkaardig gebruiikt in vb.net, ik verklaar mij even nader.

Ik wil (belangeloos) een kassaregister programma schrijven voor "het parochiezaaltje achter de hoek", niet te veel toeters en bellen, gewoon een hoop knoppen met de verkochte dranken en een totaal veldje (ook nog een "controle" listbox die een schermvariant van het ticket vormt). en wat extra knopjes, geen stockbeheer, geen verkoop per dienster, geen statiestieken enz.

Ik weet dat dit vlot zou gaan met "access en wat vba" maar vermits vb express gratis is, access niet en onze parochiezaal arm...... :D

In principe veranderen de verkochte dranken en bijhorende prijzen zelden, toch zou het dom zijn om dit mee "hard coded" in te voeren en dacht ik aan een eenvoudig tekstbestand waar alles instaat, voorbeeldje

knop01,Pils,1.20
knop02,Limonade,1.20
knop03,Koffie,1.50
------
knop26,Leffe,2.50
enz.

Tijdens het starten zou dit bestand dan ingelezen moeten worden en de waarden aan de variabelen en constanten toegekend.

Later kan ik dan die gegevens gebruiken om bv de knoppen van de juiste tekst te voorzien en met de bedragen te rekenen, zijn er toch prijswijzigingen kan dit eenvoudig in het tekst bestand aangepast worden.

Andere mogelijkheden zijn om bv een andere taal op de knoppen te zetten enz.

Heeft er iemand een idee hoe ik dit kan realiseren, hoe lees ik het tekstbestand in en hoe ken ik de teksten toe aan variabelen........

Een heel pak tekst, allicht is de code om dit te realiseren korter :rolleyes:

Alvast bedankt,

Michel
 
Beste,

eerst en vooral moet je gebruik maken van een streamreader waarbij je telkens lijn per lijn uitleest. Na ieder gelezen lijn, gebruik je de splitfunctie om de 3 items van elkaar te trekken (je moet dus na ieder item een speciaal karakter gebruiken die niet in je tekst zal voorkomen, voorbeeld: btn01;pils;1,20 of btn1_pils_1,20 of btn1zpilsz1,20 (maar dan mag er wel geen dranknaam een z bevatten), enz.. je begrijpt wel hoop ik).

Nu kun je mss eens wat zoeken om een stramreader te gebruiken en de splitfunctie.

Als je het echt niet vind, dat help ik je wel wat verder op, maar probeer het nu eerst even, zo leer je meer bij :)
 
:rolleyes:
eerst en vooral moet je gebruik maken van een streamreader waarbij je telkens lijn per lijn uitleest. Na ieder gelezen lijn, gebruik je de splitfunctie om de 3 items van elkaar te trekken

:thumb: Alvast bedankt voor de tip, op deze manier leer ik inderdaad het meeste bij, een duwtje in de goede richting is meestal interessanter dan de complete code.

Na wat zoekwerk kwam ik voorlopig tot dit resultaat:

Code:
Imports Microsoft.VisualBasic.FileIO

Public Class Form1

    Dim ConfigTabel(11, 4) As String 'we maken de array bewust "1'tje" te groot om te kunnen starten bij 1,1 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Lees_Configuratie_Bestand()


        TextBox1.Text = ConfigTabel(1, 1)
        TextBox2.Text = ConfigTabel(2, 1)
        TextBox3.Text = ConfigTabel(3, 2)
        TextBox4.Text = ConfigTabel(4, 3)

    End Sub

    Private Sub Lees_Configuratie_Bestand()

        'inlezen configuratie tekstbestand en waarden in een array stoppen

        'controleren of bestand bestaat, standaard is dit "C:\test.cfg"
        Dim BestandsNaam As String = "C:\test.cfg"
        Dim BestandBestaat As Boolean
        BestandBestaat = My.Computer.FileSystem.FileExists(BestandsNaam)
        If BestandBestaat = False Then
            MsgBox("Het configuratie bestand 'C:\test.cfg' bestaat niet")
            ' TODO: hier komt code om naar het bestand te zoeken in een boomstructuur en dan
            ' het volledige pad\bestandsnaam door te geven aan variabele "BestandsNaam"
        End If

        'lijn per lijn inlezen
        Dim AantalKnoppen As Byte
        Dim Velden As String()
        Dim ScheidingsTeken As String = ";" 'we gebruiken een ";" omdat eventueel in de prijzen een "," gebruikt wordt

        Using LeesTekst As New TextFieldParser(BestandsNaam)
            LeesTekst.SetDelimiters(ScheidingsTeken)

            For AantalKnoppen = 1 To 10  'lees de velden lijn per lijn en stop ze in een array
                Velden = LeesTekst.ReadFields()
                ConfigTabel(AantalKnoppen, 1) = Velden(0)
                ConfigTabel(AantalKnoppen, 2) = Velden(1)
                ConfigTabel(AantalKnoppen, 3) = Velden(2)

            Next AantalKnoppen

        End Using

    End Sub

End Class

Op deze manier krijg ik het configuratie bestand netjes in een array gestopt, hier kan ik (voorlopig) wel mee verder

Het (test) configuratie bestand ziet er als volgt uit:

01;tekst01;1.1
02;tekst02;2.2
03;tekst03;3.3
04;tekst04;4.4
05;tekst05;5.5
06;tekst06;6.6
07;tekst07;7.7
08;tekst08;8.8
09;tekst09;9.9
10;tekst10;10.10

Nogmaals dank, bij volgend probleem zie je mij hier beslist terug....

Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan