Categorieën
  • Mappen Bestanden (1)
  • MS Access Database (0)
  • Spelletjes Vb.net (2)
  • VB.net (5)
  • VBA Visual basic for applications (4)
  • XML LINQ (1)
  • Inhoud blog
  • Reeksen, Dictionaries, Hashtable
  • Vier op een rij
  • Het belang van Mappen en bestanden
  • XML en LINQ
  • Vb.net en Tekstbestanden
  • String
  • Zeeslag
  • Voorwaarden en Lussen
  • Over willekeurige getalen.
  • Van VBA naar VB.net
    Beoordeel dit blog
      Zeer goed
      Goed
      Voldoende
      Nog wat bijwerken
      Nog veel werk aan
     
    Zoeken in blog

    MS Access VBA VB.Net
    Ontwerpen van Database en VB.net voor Dummies
    10-04-2013
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.Het belang van Mappen en bestanden

    Over Mappen en Bestanden

    In ieder programma wordt er gebruik gemaakt van Mappen en bestanden, soms bestaan Mappen of moeten deze via het programma aangemaakt worden. Het komt ook veelvuldig voor dat men moet controleren indien een bepaald bestand bestaat.
    Hier enkele mogelijkheden.

    Bemerk dat in de class of module de namespace System.IO moet geïmporteerd worden.
    Imports System.IO
    Public Class clsMapBest

    Public Shared Sub sMapContr(ByVal strPad As String)
     'controleer indien een Map of Mappen-structuur bestaat zoniet creeër
    Try
    If Directory.Exists(strPad) Then
    MessageBox.Show(strPad & " bestaat reeds !", "Info Map", MessageBoxButtons.OK)
    Else
    Dim map As DirectoryInfo = Directory.CreateDirectory(strPad)
    MessageBox.Show("Map " & strPad & " aangemaakt!", "Info Map", MessageBoxButtons.OK)
    End If
    Catch ex As Exception
    Dim strInfo As String = "Operatie map aanmaken mislukt : " & ex.Message
    End Try
    End Sub
    

    Public Shared Function fBestaatBest(ByVal strPadBest As String) As Boolean
    If File.Exists(strPadBest) Then
    Return True
    Else
    Return False
    End If
    End Function
    

    10-04-2013 om 00:00 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 0/5 - (0 Stemmen)
    Categorie:Mappen Bestanden
    >> Reageer (0)
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.XML en LINQ

    Wat is XML

    XML staat voor Extensible Markup Language en is een standaard taal van het World Wide Web Consortium. Met XML kan men gestructureerde gegevens weergeven in de vorm van platte tekst die zowel door een computer als door een mens leesbaar zijn. Het XML-formaat wordt gebruikt om gegevens op te slaan en/of om gegevens over het internet te versturen. XML gebruikt elementen en attributen om gegevens te structureren. Men is echter vrij om de namen voor de elementen en attributen zelf te kiezen gezien de keuze afhangt van wat men met het XML bestand van plan is. De XML-specificatie definieert enkel de syntaxis van elementen, attributen en de andere structuren die in XML-bestanden kunnen voorkomen.

    Wat is LINQ

    LINQ staat voor Language Integrated Query. Het is een taal die door Microsoft ontworpen is en deel uit maakt van het .Net framework en derhalve beschikbaar is in de Express uitgaven van Visual Studio. LINQ doet denken aan SQL. SQL staat voor Structured Query Language en is een krachtige taal om relationele databases zoals MS Access, SQL-server... aan te sturen en te bevragen. De taal is in de jaren ’70 door IBM ontwikkeld. De Syntaxis van LINQ wijkt echter af van deze van SQL. Met LINQ kan men ook gegevens uit XML en Arrays bestanden benaderen. Vanzelfsprekend ondersteund Visual Basic .NET LINQ.
    Met LINQ kan men in VB.net ook XML-bestanden aanmaken.

    Bespreking van mijn class clsLinqNaarXml

    Door gebruik te maken van deze Class kan men met LINQ XML- bestanden creëren, er data aan toevoegen en data opvragen

    Public Class clsLinqNaarXml
        Private Shared strmijnData As String = "c:av_VBNETDatawa_Testen_av_2mijnData.xml"
    

    
        Public Shared Function Geef_mijnData() As XDocument
            Try
                Dim mijnDoc As XDocument = XDocument.Load(strmijnData)
    
                Return mijnDoc
            Catch ex As System.IO.FileNotFoundException
                MessageBox.Show(ex.Message)
                Return Nothing
            End Try
        End Function
    

    
        Public Shared Sub Toev_mijnData(ByVal strNaam As String, ByVal strVNaam As String, ByVal strGesl As String, _
         ByVal shtGebJaar As Short)
            'Het document inladen
            'Dim mijnDoc As XDocument = XDocument.Load("mijnData.xml")
            Dim mijnDoc As XDocument = XDocument.Load(strmijnData)
            'Nieuw XElement op basis van de parameters
            Dim NieuwXElement As New XElement("Persoon", New XElement("Naam", strNaam),
                                              New XElement("VNaam", strVNaam),
                                              New XElement("Gesl", strGesl),
                                              New XElement("GebJaar", shtGebJaar))
            'toeveogen aan het in memory element
            ' mijnDoc.Descendants("Persoon").First.Add(NieuwXElement) toevoegen na eerste element
            mijnDoc.Descendants("Datalijst").Last.Add(NieuwXElement)
            'naar schijf bewaren
            mijnDoc.Save(strmijnData)
        End Sub
    

    
        Public Shared Sub Zoek_OpGels(ByVal strGesl As String)
            'Het document inladen
            Dim mijnDoc As XDocument = XDocument.Load(strmijnData)
            'LINQ expressie opstellen
            Dim zoekOpGesl = From Persoon In mijnDoc.Descendants("Persoon")
            Where CStr(Persoon.Element("Gesl")) = strGesl
            Select Persoon.Element("VNaam").Value
            Dim data As String = String.Empty
            For Each item In zoekOpGesl.Distinct()
                data &= String.Format("- {0}" & vbLf, item)
            Next
            MessageBox.Show(data, String.Format("{0} Voornaam is:", strGesl))
    
        End Sub
    

    
        Public Shared Sub Toev_Lijst(ByVal intIDData As Integer, ByVal strTypeData As String, ByVal strNaamData As String _
                                    , ByVal strOmschrData As String, ByVal strPadBest As String)
            Dim mijnDocX As XDocument = XDocument.Load(strPadBest)
            Dim NieuwXElement As New XElement("Data",
                                              New XElement("IDData", intIDData), _
                                              New XElement("TypeData", strTypeData), _
                                              New XElement("NaamData", strNaamData), _
                                              New XElement("OmschrData", strOmschrData))
            mijnDocX.Descendants("Lijst").Last.Add(NieuwXElement)
            mijnDocX.Save(strPadBest)
    
        End Sub
        

    
        Public Shared Sub MaakNieuwe_Lijst(ByVal strPadBest As String, ByVal intIDData As Integer, ByVal strTypeData As String,
                                           ByVal strNaamData As String, ByVal strOmschrData As String)
            Dim lijstXDoc As New XElement("Lijst",
                                                   New XDeclaration("1.0", "utf-8", "yes"),
                                                   New XComment("Een lijst met data!"),
                                                        New XElement("Data",
                                                        New XElement("IDData", intIDData),
                                                        New XElement("TypeData", strTypeData),
                                                        New XElement("NaamData", strNaamData),
                                                        New XElement("OmschrData", strOmschrData)))
            lijstXDoc.Save(strPadBest)
    
        End Sub
    End Class
    

    Toepassen van bovenstaande klas op het formulier frmHoofd

    Imports System.Xml.Linq

    
    Public Class frmHoofd
    
        Private Sub frmHoofd_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.cbgGeslZ.SelectedText = "Man"
            Me.cboGesl.SelectedText = "Man"
            Me.txtmijnData.Text = clsLinqNaarXml.Geef_mijnData.ToString
        End Sub
    

    
        Private Sub cmdToevoegen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdToevoegen.Click
            clsLinqNaarXml.Toev_mijnData(Me.txtNaam.Text, Me.txtVNaam.Text, Me.cboGesl.Text, Me.txtGebJaar.Text)
            Me.txtmijnData.Text = clsLinqNaarXml.Geef_mijnData.ToString
        End Sub
    

    
        Private Sub cmdGeslZ_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdGeslZ.Click
            clsLinqNaarXml.Zoek_OpGels(Me.cbgGeslZ.Text)
        End Sub
    

    
        Private Sub cmd_frm_xml_maken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
         Handles cmd_frm_xml_maken.Click
            frmXMLMaken.Show()
            frmXMLMaken.Visible = True
    
        End Su
    End Class
    

    Hier het formulier waar de class op toegepast wordt.

    Formulier

    Berekeningen met LINQ zoals in de class clsDataSpel

    Stel een XML bestand ppSpel.xml met volgende structuur:

    XML-formulier

    Ten einde berekeningen te kunnen uitvoeren op dit bestand creëren wij de clsDataSpel

    Public Class clsDataSpel
        Private Shared _strppData As String = My.Computer.FileSystem.CurrentDirectory & "ppDatappSpel.xml"
        Private _datum As String

    
        Public Sub New()
    
        End Sub
    

    
        Public Shared Function Geef_ppData() As XDocument
            Try
                Dim mijnDoc As XDocument = XDocument.Load(_strppData)
    
                Return mijnDoc
            Catch ex As System.IO.FileNotFoundException
                MessageBox.Show(ex.Message & vbCrLf & "Databestand niet gevonden!")
                Return Nothing
            End Try
        End Function
      

      
        Public Shared Sub Toev_ppData(ByVal strNaam As String, ByVal strDatum As String, ByVal strGewonnen As String)
            'Het document inladen
    
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
            'Nieuw XElement op basis van de parameters
            Dim NieuwXElement As New XElement("resultaat", New XElement("naam", strNaam),
                                              New XElement("datum", strDatum),
                                              New XElement("gewonnen", strGewonnen))
    
            'toevoegen aan het in memory element
    
            mijnDoc.Descendants("spel").Last.Add(NieuwXElement)
            'naar schijf bewaren
            mijnDoc.Save(_strppData)
        End Sub
    

    
        Public Shared Function Aant_Spel() As Integer
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
            Dim Aant As Integer = (From a In mijnDoc.Descendants("resultaat") Select a).Count
            Return Aant
        End Function
    

    
        Public Shared Function pp_Gewonnen() As Integer
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
            Dim Aant As Integer = (From a In mijnDoc.Descendants("resultaat") Where a.Element("gewonnen") = "n" Select a).Count
            Return Aant
        End Function
    

    
        Public Shared Function Naam_Aant_Spel(ByVal strNaam As String) As Integer
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
            Dim Aant As Integer = (From a In mijnDoc.Descendants("resultaat")  _
            Where CStr(a.Element("naam").Value) = strNaam Select a.Element("naam")).Count
            Return Aant
        End Function
    

    
        Public Shared Function Naam_Gewonnen(ByVal strNaam As String) As Integer
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
    
            Dim Aant As Integer = (From a In mijnDoc.Descendants("resultaat") Where a.Element("gewonnen") = "j"  _
            AndAlso a.Element("naam") = strNaam Select a).Count
            
            Return Aant
        End Function
     

       
        Public Shared Function Namen() As List(Of String)
            Dim mijnDoc As XDocument = XDocument.Load(_strppData)
            
            Dim Allenamen = From a In mijnDoc.Descendants("resultaat") Order By a.Element("naam").Value _
             Select a.Element("naam").Value Distinct
    
            Dim _Namen As New List(Of String)
    
            For Each strNaam In Allenamen
                _Namen.Add(strNaam)
                
            Next strNaam
            Return _Namen
            Return Nothing
        End Function
    

    
        ReadOnly Property Datum
            Get
                Datum = _datum
            End Get
        End Property
    

    
        Public Shared Function GeefDatum() As String
            Return Date.Now.Day.ToString & "/" & Date.Now.Month.ToString & "/" & Date.Now.Year.ToString
        End Function
    
    End Class
    
    

    Bij het opstarten van formulier hieronder wordt gebruik gemaakt van de class clsDataSpel.

    XML-formulier
    Public Class frmStart
    
        Private Sub frmStart_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'lijst vullen van spelers
            
            Dim strNamen As New List(Of String)
            strNamen = clsDataSpel.Namen
            For intTelNamen = 0 To strNamen.Count - 1
                Me.lstSpelers.Items.Add(strNamen(intTelNamen))
            Next
            Me.lstSpelers.SelectedIndex = 0
            'resultaten van pietje pek weergeven
            Dim strResulPP As String = "PIETJE PEK speelde " & clsDataSpel.Aant_Spel.ToString & " maal" _
                                       & vbCrLf & " en won " & clsDataSpel.pp_Gewonnen.ToString & " maal !"
            Me.lblResul_PP.Text = strResulPP
    
           'resultaten speler blanken
            Me.lblResul_Sp.Text = ""
        End Sub
    

    
        Private Sub lstSpelers_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstSpelers.Click
            Dim strNaamSpeler As String = Me.lstSpelers.SelectedItem.ToString
            Dim strResulSp As String = strNaamSpeler.ToUpper & " speelde " & clsDataSpel.Naam_Aant_Spel(strNaamSpeler).ToString & " maal" _
                                       & vbCrLf & " en won " & clsDataSpel.Naam_Gewonnen(strNaamSpeler).ToString & " maal !"
            Me.lblResul_Sp.Text = strResulSp
        End Sub
    

    
        Private Sub lstSpelers_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstSpelers.DoubleClick
            Me.txtNaam.Text = Me.lstSpelers.SelectedItem.ToString
        End Sub
    
       
    

    10-04-2013 om 00:00 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 0/5 - (0 Stemmen)
    Categorie:XML LINQ
    >> Reageer (0)
    09-04-2013
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.Vb.net en Tekstbestanden

    Creëren, Inlezen en schrijven naar tekstbestanden.

    Public Sub LezenTekstBestand_1() 
    'Er bestaat een tekstbestand tweede.txt in de map van de toepassing
    Dim mijnLezer As New IO.StreamReader("tweede.txt")
    Dim mijnLijn As String = ""
    While Not IsNothing(mijnLijn)
    mijnLijn = mijnLezer.ReadLine
    If Not IsNothing(mijnLijn) Then
    Debug.Print("Ingelezen tekstbestand:" & mijnLijn)
    End If
    End While
    End Sub
    

     Public Sub CreerTekstBestand_1()
    Dim mijnPad = IO.Directory.GetCurrentDirectory & "TekstmijnTekst.txt"
    If IO.File.Exists(mijnPad) = False Then
    ' Indien het tekstbestand niet bestaat creër het
    Dim sw As IO.StreamWriter = IO.File.CreateText(mijnPad)
    sw.WriteLine("Dit is de eerste lijn")
    sw.WriteLine("Dit is de tweede lijn")
    sw.WriteLine("Dit is de derde lijn")
    sw.Flush() 'Alles die in de buffer geschreven wordt opgeslagen in het bestand terwijl de buffer geledigd wordt.
    sw.Close()
    ' Indien het bestaat verwijder het en creër opnieuw
    Else
    IO.File.Delete(mijnPad)
    Dim sw As IO.StreamWriter = IO.File.CreateText(mijnPad)
    sw.WriteLine("Dit is de eerste nieuwe lijn")
    sw.WriteLine("Dit is de tweede nieuwe lijn")
    sw.WriteLine("Dit is de derde nieuwe lijn")
    sw.Flush()  'Alles die in de buffer geschreven wordt opgeslagen in het bestand terwijl de buffer geledigd wordt.
    sw.Close()
    End If
    ' Bestand openen en inlezen
    Dim sr As IO.StreamReader = IO.File.OpenText(mijnPad)
    Do While sr.Peek() >= 0 'Geeft een integer overeenkomstig het volgende te lezen karakter Geeft -1 indien geen karakters meer te lezen zijn.
    Debug.Print(sr.ReadLine())
    Loop
    sr.Close()
    End Sub
    

     Public Sub Schrijven_en_Lezen_1()
    If Microsoft.VisualBasic.FileIO.FileSystem.FileExists("TekstEerste.txt") Then
    FileIO.FileSystem.WriteAllText("TekstEerste.txt", "-een", vbTrue)
    Dim strGelezen As String = Microsoft.VisualBasic.FileIO.FileSystem.ReadAllText("TekstEerste.txt")
    MsgBox(strGelezen)
    End If
    End Sub
    

    Public Sub Schrijven_1()
    If Microsoft.VisualBasic.FileIO.FileSystem.FileExists("TekstDerde.txt") Then
    Dim schrijver As New IO.StreamWriter("TekstDerde.txt")
    Dim sb As New System.Text.StringBuilder()
    Dim i As Short = 0
    For i = 1 To 5
    sb.AppendLine("xxxxxxxxxxxxxxx")
    sb.AppendLine(i.ToString)
    Next
    schrijver.Write(sb.ToString)
    schrijver.Close()
    End If
    End Sub
    

     Public Sub schrijven_2()
    'met system.IO kan men een tekstbestand maken
    Dim strStartUp As String = Application.StartupPath
    MsgBox("Startop pad : " & strStartUp)
    MsgBox(My.Resources.Pad)
    If Not IO.File.Exists(My.Resources.Pad & "Vierde.txt") Then
    Using schrijver As IO.StreamWriter = IO.File.CreateText(My.Resources.Pad & "Vierde.txt") ' retourneert een streamWriter
    schrijver.WriteLine("Mijn eerste lijn")
    schrijver.Close()
    End Using
    Else
    'Mijn eerste lijn wordt overschreven
    Dim schrijver As New IO.StreamWriter(My.Resources.Pad & "Vierde.txt")
    Using schrijver
    schrijver.WriteLine("Mijn nieuwe eerste lijn")
    schrijver.WriteLine("Mijn tweede lijn")
    schrijver.Close()
    End Using
    Using schrijver2 As IO.StreamWriter = IO.File.AppendText(My.Resources.Pad & "Vierde.txt")
    schrijver2.WriteLine("Mijn derde lijn")
    schrijver2.Close()
    End Using
    End If
    End Sub
    

    09-04-2013 om 00:00 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 0/5 - (0 Stemmen)
    Categorie:VB.net
    >> Reageer (0)
    08-04-2013
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.String

    Datatype String

    Het String datatype vertegenwoordigt reeksen van letters en cijfers, waar men met cijfers in principe geen wiskundige bewerkingen beoogt.
    VB.net laat diverse stringmanipulaties toe, waarvan enkele handige hieronder besproken worden.

     Public Sub StringMan()
            Dim mijnEersteString As String = ""
            Dim mijnTweedeString As String = ""
            Dim mijnDerdeString As String = ""
            Dim mijnVierdeString As String = ""
            Dim mijnVijfdeString As String = ""
            Dim mijnZesdeString As String = ""
            Dim mijnZevendeString As String = ""
            Dim mijnAchtsteString As String = ""
            Dim mijnNegendeString As String = ""
            
    De Format-methode: mijnEersteString = String.Format("{0}!", "Een allebeste goede morgen") Debug.Print("Mijn eerste string:" & mijnEersteString) 'Retourneert : Mijn eerste string:Een allebeste goede morgen! 'Gebruikmakend van de Format methode en de accoladetekens kan men zogenaamde substitutie verwezenlijken 'Meedere substituties zijn mogelijk, zoals bijvoorbeeld mijnTweedeString = String.Format("Mijn TV van merk {0} Type {1} Bouwjaar {2}", "Sony", "Bravia", 2012) Debug.Print("Mijn tweede string:" & mijnTweedeString) 'Retourneert : Mijn tweede string:Mijn TV van merk Sony Type Bravia Bouwjaar 2012 'De format methode kan met C duiding ook gebruikt worden voor munt aanduiding overeenstemmend met de plaatselijke instelling in Windows mijnDerdeString = String.Format("{0:C}", 100.75) Debug.Print("Mijn derde string:" & mijnDerdeString) 'Retourneert : Mijn derde string:€ 100,75 'De format methode met N duiding geeft correcte punctuatie van een getal mijnVierdeString = String.Format("{0:N}", 1234567890) Debug.Print("Mijn vierde string:" & mijnVierdeString) 'Retourneert = Mijn vierde string:1.234.567.890,00 'De format methode met P duiding geeft een getal in procenten terug mijnVijfdeString = String.Format("{0:P}", 0.25) Debug.Print("Mijn vijfde string:" & mijnVijfdeString) 'Retourneert : Mijn vijfde string:25,00% 'Met de format methode kan men bijvoorbeeld ook een telefoon of GSM nummer in een correctie vorm weergeven 'Nemen wij bijvoorbeeld een GSM nummer door de gebruiker ingegeven als 0475 23 34 89 Dim strGSM = "0475 23 34 89 " 'Met de Trim functie verwijderen wij alle eerste en laatste spaties strGSM = Trim(strGSM) 'Vervolgens verwijderen spaties binnen het nummer strGSM = strGSM.Replace(" ", "") 'controleren indien 10 cijfers opgegeven werden, dan de eerste nul verwijderen en dan getal laten vooraf gaan door 32 If strGSM.Length = 10 AndAlso Left(strGSM, 1) = "0" Then strGSM = "32" & Right(strGSM, 9) Dim lng As Long = CLng(strGSM) mijnZesdeString = String.Format("GSM-nr = +{0: ##### ## ## ##}", lng) Debug.Print("Mijn zesde string:" & mijnZesdeString) 'Retourneert : Mijn zesde string:GSM-nr = + 32475 23 34 89 End If 'Het gebeurt dat men een string wijzigt in een lus For intTel As Integer = 0 To 100 mijnZevendeString += "--" & intTel.ToString Next Debug.Print("Mijn zevende string:" & mijnZevendeString) 'Retourneert : Mijn zevende string:--0--1--2--3--4--5--6--7--8--9--10--11 enz 'Bovenstaande werkt maar is onefficient iedere lus moet de variabele in het geheugen opgehaald en vervangen worden 'Beter is om in dergelijke gevallen gebruik te maken van het StringBuilder-object Dim mijnBuilder As New System.Text.StringBuilder For intTel As Integer = 0 To 100 mijnBuilder.Append("--") mijnBuilder.Append(intTel) Next mijnAchtsteString = mijnBuilder.ToString Debug.Print("Mijn achtste string:" & mijnAchtsteString) 'Retourneert : Mijn achtste string:--0--1--2--3--4--5--6--7--8--9--10--11 enz 'Met de Substring-methode kan mijn een vooraf bepaald gedeelte van een string afzonderen mijnNegendeString = "Uit deze string wordt een bepaald gedeelte afgezonderd" mijnNegendeString = mijnNegendeString.Substring(9, 6) Debug.Print("Mijn negende string:" & mijnNegendeString) 'Retourneert : Mijn negende string:string End Sub

    08-04-2013 om 11:44 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 1/5 - (1 Stemmen)
    Categorie:VB.net
    >> Reageer (0)
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.Zeeslag
    Het klassieke zeeslag spel zoals toegelicht op http://nl.wikipedia.org/wiki/Zeeslag_(spel)

    Heb ik ontwikkeld in VB.net versie 2010. Kan zonder problemen geïnstalleerd worden op Window PC's met versie Windows 7 en 8.

    Hoe installeren :
    1. Bewaar het zip bestand op uw PC
    2. Via WinZip het bestand unzippen naar een afzonderlijke ledige MAP
    3. Ga via Windows-verkenner naar de MAP en dubbelklik op setup.
    4. Volg de instructies

    Start nieuw spel: men moet zijn schepen plaatsen in rechter vak
    start nieuw spel
    Hier zijn de schepen geplaatst, schepen Kapitein Baard zijn onzichtbaar
    Schepen speler zijn geplaatst
    Voor de spelregels, druk op vraagteken '?' rechts bovenaan
    Spelregels
    Speler geeft positie in en drukt op vuren -links-
    na enkele seconden vuurt kapitein baard -rechts. Mis = Wit, Raak = Rood.
    Vuren

    Bijlagen:
    Zeeslag.zipx (1.5 MB)   

    08-04-2013 om 00:00 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 2/5 - (4 Stemmen)
    Categorie:Spelletjes Vb.net
    >> Reageer (0)
    05-04-2013
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.Voorwaarden en Lussen
    If Expressie die Waar of Vals is Then
    	Doe iets als de expressie Waar is
    End If
    
    Const strResultaat As String = "Het resultaat is....."
    Sub sAls1()
    If MsgBox("Wat kies je ?", vbQuestion + vbOKOnly, "maak keuze") = vbOK Then
        MsgBox "u koos OK!", vbInformation, strResultaat
    End If
    End Sub
    
    If Expressie die Waar of Vals is Then
    	Doe iets als de expressie Waar is
    Else
    	Doe iets anders indien de Expressie niet waar is
    End If
    
    Sub sAls2()
    Dim strBoodschap As String
    If MsgBox("Wat kies je ?", vbQuestion + vbOKCancel, "maak keuze") = vbOK Then
        strBoodschap = "u koos OK!"
    Else
        strBoodschap = "u koos Cancel"
    End If
    MsgBox strBoodschap, vbInformation, strResultaat
    End Sub
    
    If Eerste Expressie die Waar of Vals is Then
    	Doe iets als de eerste expressie Waar is en negeer volgende ElseIf
    ElseIf Tweede Expressie die Waar of Vals is Then
    	Doe iets als de tweede expressie waar is en negeer volgende ElseIf
    ElseIf Derde Expressie die Waar of Vals is Then
    	Doe iets als de Derde expressie waar is
    End If
    
    Sub sAls3()
    Dim intKeuze As Integer
    Dim strBoodschap As String
    intKeuze = MsgBox("Wat kies je ?", vbQuestion + vbYesNoCancel, "maak keuze")
        If intKeuze = vbYes Then
            strBoodschap = "u koos Yes!"
        ElseIf intKeuze = vbNo Then
            strBoodschap = "u koos No"
        ElseIf intKeuze = vbCancel Then
            strBoodschap = "u koos Cancel"
        End If
    MsgBox strBoodschap, vbInformation, strResultaat
    End Sub
    
    vertoont veel gelijkenis met voorgaande If Then ElseIf Then End If
    maar is overzichtelijk en beter als er veel condities moeten getest worden
    Select case
    	Case 
    		voer actie uit indien waar en ga dan naar End Select
    	Case 
    		voer actie uit indien waar en ga dan naar End Select
    	Case 
    		voer actie uit indien waar en ga dan naar End Select
    ........enz
    End Select	
    
    Sub sSelect()
    Dim strBoodschap As String
    Dim varGegeven As Variant
    
    varGegeven = InputBox("voer willekeurig getal in", "Select Case voorbeeld")
    If IsNumeric(varGegeven) Then
        Select Case varGegeven
            Case Is < 0
                strBoodschap = "Het getal is kleiner dan nul"
            Case Is = 0
                strBoodschap = "Het getal is gelijk aan nul"
            Case Is < 11
                strBoodschap = "Het getal is tussen 1 en 10"
            Case Is < 101
                 strBoodschap = "Het getal is tussen 11 en 100"
            Case Is < 1001
                strBoodschap = "Het getal is tussen 11 en 1000"
            Case Is > 1000
                strBoodschap = "Het getal is groter dan 1000"
        End Select
    Else
        strBoodschap = "u hebt geen getal ingegeven!"
    End If
     MsgBox strBoodschap, vbInformation, strResultaat
    End Sub
    
    For int = 0 To 1000 (of eender ander geheel getal)
    Doe iets, hier wordt een conditie gecontroleerd en herhaal tot aan 1000 (of eender ander geheel getal)
    Next int
    Men kan zonodig de lus verlaten met een Exit For Statement
    
    Sub sFor1(intTelTot As Integer, intDeelbaarDoor As Integer)
    Dim intTel As Integer
    Dim intDum As Integer
        For intTel = 1 To intTelTot
            If intTel Mod intDeelbaarDoor = 0 Then
                intDum = intDum + 1
            End If
        Next intTel
    MsgBox " van 1 tot " & intTelTot & " zijn er " & intDum & vbCrLf & " getallen deelbaar door " & intDeelbaarDoor, vbInformation, strResultaat
    End Sub
    
    For each
    	Doe iets
    Next
    vertoont gelijkenis met voorgaande maar is vooral handig bij objecten en er moet geen limiet getal ingegeven worden
    Hier een voorbeeld met formulieren
    
    Sub sFor2()
    Dim objAccess As Access.AccessObject
    Dim intTel As Integer
        For Each objAccess In CurrentProject.AllForms
            Debug.Print objAccess.Name
            intTel = intTel + 1
        Next
    MsgBox intTel & " formulieren", vbInformation, strResultaat
    End Sub
    
    Do While of Until een bepaalde expressie waar is
    	Doe iets
    Loop
    er moet geen limiet getal ingegeven worden en de lus wordt doorlopen
    tot de conditie waar is
    tussen in kan men bijkomende condities instellen en zonodig de lus verlaten met een Exit Do statement
    
    Sub sDo1()
    Dim intIets As Integer
    Dim intStap As Integer
        intStap = 1000
        intIets = 1
            Do While intIets > 0
                intIets = intIets + 1
                    If intIets > intStap Then
                        If MsgBox(" wij zijn aan " & intIets & " Stoppen ?", vbInformation + vbYesNo) = vbNo Then
                            intStap = intStap + 1000
                                If intStap > 30000 Then
                                    MsgBox "nu moet je stoppen!", vbCritical + vbOKOnly, strResultaat
                                    Exit Do
                                End If
                        Else
                        intIets = -1
                        End If
                    End If
            Loop
    End Sub
    
    Sub sDo2()
    Dim intIets As Integer
    Dim intStap As Integer
        intStap = 1000
        intIets = 1
        Do Until intIets > 30000
            intIets = intIets + 1
            
                    If intIets > intStap Then
                        If MsgBox(" wij zijn aan " & intIets & " Stoppen ?", vbInformation + vbYesNo) = vbNo Then
                            intStap = intStap + 1000
                                If intStap > 29000 Then
                                    MsgBox "nu moet je stoppen, ik verwittig niet meer!", vbCritical + vbOKOnly, strResultaat
                                    intIets = 30001
                                End If
                        Else
                        intIets = 30001
                        End If
                    End If
            Loop
    End Sub
    
    Een variante op Do maar zelfde principe dus
    While een voorwaarde is waar
    	doe iets
    Wend
    
    Sub sWhile()
    Dim intTel As Integer
        While intTel > 30001
            intTel = intTel + 1
            If intTel = 30000 Then
                MsgBox "wij zijn aan " & intTel & vbCrLf & "wij gaan stoppen!", vbCritical, strResultaat
            End If
        Wend
    End Sub
    

    05-04-2013 om 16:42 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 4/5 - (3 Stemmen)
    Categorie:VBA Visual basic for applications
    >> Reageer (0)
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.Over willekeurige getalen.

    Willekeurige getallen genereren, is een getal even of oneven

    In veel programma's moeten op een bepaald ogenblik willekeurige getallen gegeneerd worden. In VB.net brengt men de code daartoe best onder in een 'class'. Hier worden een aantal class'es besproken, waar gewoon een willekeurig getal tussen twee grenzen gegeneerd wordt, maar ook waar tussen twee grenzen één zelfde waarde slechts éénmaal mag voorkomen. Ook code waarmee men kan bepalen indien het getal even of oneven is.

    clsWilGet1:Willekeurig getal van Byte-datatype (0 tot 255) tussen twee limieten mag maar éénmaal voorkomen.

    'System.Security.Cryptography moet in de class geImporteerd worden.
    Imports System.Security.Cryptography
    Public Class clsWilGet1
        Dim _set As BitArray
        Dim _min As Byte
        Dim _max As Byte
        Dim _tel As Integer
    

    
        Public Sub New(ByVal min As Byte, ByVal max As Byte)
            _min = min
            If (min > max) Then
                _max = min
            Else
                _max = max
            End If
            _set = New BitArray(_max - _min + 1)
            _tel = max - min
        End Sub
    

    
        Public Function GeefVolgendGetal() As Integer
            Dim randomGetal(0) As Byte
            Dim testGetal As Integer
            Dim rng As New RNGCryptoServiceProvider()
    
            Do While _tel >= 0
                rng.GetBytes(randomGetal)
                testGetal = CInt(randomGetal(0))
                testGetal = (CInt(testGetal) Mod (_max - _min + 1)) + _min
                If Not _set.Item(testGetal - _min) Then
                    _set.Set(testGetal - _min, True)
                    _tel -= 1
                    Return testGetal
                End If
            Loop
    
            Return -1
        End Function
    

    
        Public Sub Reset()
            _tel = _max - _min
            _set.SetAll(False)
        End Sub
    End Class
    
    

    clsWilGet2:Willekeurig getal van Integer-datatype tussen twee limieten mag maar éénmaal voorkomen.

    Public Class clsWilGet2
        Private _min, _max As Integer
        Private _set() As Integer 'Array of integers
        Private _index As Integer
        

    
        Public Sub New(ByVal min As Integer, ByVal max As Integer)
            _min = min
            If (min > max) Then
                _max = min
            Else
                _max = max
            End If
    
            'vorm de reeks
            _set = InitReeks()
    
        End Sub
    

    
        Private Function InitReeks() As Integer()
    
            Dim random As New Random()
            Dim getallen(_max - _min) As Integer
            Dim waarde As Integer = _min
            Dim tmp As Integer
            Dim index1 As Integer
            Dim index2 As Integer
    
            'vul de rees met de getallen
    
            For x As Integer = 0 To getallen.Length - 1
                getallen(x) = waarde
                waarde += 1
            Next
    
            'haal door elkaar 1000 iteraties moeten voldoende zijn
    
            For x As Integer = 0 To 1000
                'neem twee willekeurige indexen
                index1 = random.Next(0, getallen.Length)
                index2 = random.Next(0, getallen.Length)
    
                'haal door elkaar
                tmp = getallen(index1)
                getallen(index1) = getallen(index2)
                getallen(index2) = tmp
    
            Next
           
    
            Return getallen
    
        End Function
    

    
        Public Function GetNext() As Integer
    
            Dim result As Integer
    
            If (_index < _set.Length) Then
                result = _set(_index)
                _index += 1
            Else
                result = -1
            End If
    
            Return result
    
        End Function
    End Class
    

    clsWilGet3:Willekeurig getal van Integer-datatype tussen twee limieten mag maar éénmaal voorkomen.

    Public Class clsWilGet3
        Private rand As Random
        Private pool As List(Of Integer)
    
    Sub New(ByVal min As Integer, ByVal max As Integer) rand = New Random pool = New List(Of Integer)(max - min) For i As Integer = min To max pool.Add(i) Next End Sub
    Public Function GeefItem() As Integer If pool.Count = 0 Then Return -1 ' geef willekeurige index van de pool List. Dim index As Integer = rand.Next(0, pool.Count) ' geef weer. Dim draw As Integer = pool(index) ' verwijder van de pool List. pool.RemoveAt(index) Return draw End Function End Class

    clsWilGetal1, clsWilGetal2, clsWilGetal3 weergeven in een console-toepassing.

    Sub Main()
            
    
            Dim raad1 As New clsWilGet1(1, 100)
            Dim raad2 As New clsWilGet2(1, 100)
            Dim raad3 As New clsWilGet3(1, 100)
            For intTel As Integer = 0 To 20
                Console.Write(raad1.GeefVolgendGetal & " - " & raad2.GetNext & " - " & raad3.GeefItem & vbCrLf)
            Next
            Console.ReadLine()
        End Sub
    

    Willekeurig getal tussen twee limieten

    
    ''' Generen van een willekeurig getal tussen 0 en 7, men kan de limieten wijzigen
    

    
    Public Class clsWilGetal
        Private Shared _intWilGetal As Integer
    

    
    
        Public Shared ReadOnly Property Genereer() As Integer
            Get
                Dim intBoven As Integer = 6
                Randomize()
                _intWilGetal = CInt(Int((intBoven * Rnd()) + 1))
    
                Return _intWilGetal
            End Get
    
        End Property
    
    End Class
    

    Is een getal Even of Oneven?

    Sub OnOfEven()
            Dim intTeller As Integer = 1
            Dim strEven As String = "even"
            Dim strOneven As String = "oneven"
            Dim strResul As String = ""
            Do While intTeller < 100 'hier tot 100 maar kan meer zijn
                If intTeller Mod 2 = 0 Then 'getal is even
                    strResul = strEven
                Else
                    strResul = strOneven
                End If
                Console.WriteLine(intTeller & "is " & strResul)
                intTeller = intTeller + 1
            Loop
        End Sub
    

    Priemgetallen weergeven tot opgegeven bovengrens

    Public Function Priem(ByVal intMaxGrens As Integer) As String
            Dim i As Integer
            Dim j As Integer
            Dim bflag As Boolean
            Dim strResul As String = ""
            For i = 1 To intMaxGrens
                bflag = True
                For j = 2 To i / 2
                    If i Mod j = 0 Then
                        bflag = False
                    End If
                Next
                If bflag Then
    
                    strResul += i.ToString & " "
                End If
            Next
            Return Trim(strResul)
        End Function
    

    05-04-2013 om 00:00 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 4/5 - (1 Stemmen)
    Categorie:VB.net
    >> Reageer (0)
    03-04-2013
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.Van VBA naar VB.net

    VB.net

    Waarom VB.net

    Wie VBA onder de knie heeft ondervindt in eerste instantie niet te veel problemen om naar VB.net over te stappen. Na enige initiatie en gewenning stelt men echter vast dat de mogelijkheden extreem ruimer zijn.
    Bovendien stelt Microsoft gratis een 'Expression' - versie van Visual studio ter beschikking.
    Het betreft hier werkelijk een bijzondere krachtige ontwikkelings omgeving, in het Engels IDE of Integrated Development Environment.
    Deze Blog heeft niet de pretentie om deze toepassing, ik werk met zowel de versie 2010 als 2012 , volledig uit de doeken te doen. Wel kan ik iedereen die graag programma's maakt, al zij het in de hobbysfeer zoals bij mezelf, deze ontwikkelingsomgeving warm aanbevelen.

    Waar te bekomen ?

    Via volgende link kan men gratis Visual Studio Express 2012 for Windows Desktop downloaden.
    Volg de instructies en na het dowloaden en de installatie rest u nog enkel de applicatie gratis te registreren op de website van Microsoft.

    Hoe onder de knie krijgen ?

    Ik zelf heb mijn toevlucht gezocht bij enkele boeken over VB.net, aanraders zijn :

    Deze Blog.

    Op deze blog wil ik graag ervaringen delen. Van practische problemen waarop ik gezocht heb geef ik hier graag mijn oplossing.
    De laatste tijd leg ik mij toe op het ontwikkelen van eenvoudige spelletjes zoals, 'Pietjesbak', 'Vier op een rij', 'Zeeslag'. Eens deze volledig op punt staan zal ik deze op deze blog ter beschikking stellen.

    03-04-2013 om 00:00 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 2/5 - (4 Stemmen)
    Categorie:VB.net
    >> Reageer (0)
    27-03-2013
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.VBA Procedures Sub en Function.

    VBA Procedures Sub en Function.

    VBA code wordt uitgevoerd in Sub of Function Procedures. Terwijl beide voorgaanden ingekapseld zitten in een Module of een Class-Module.

    • Sub : Bij een Sub wordt een actie uitgevoerd maar wordt er niets geretourneerd. Bijvoorbeeld een formulier openen, een bericht laten zien aan de gebruiker via de MsgBox funtie. Een Sub kan al dan niet argumenten nemen, en kan Public of Private zijn
    • Function : Bij een kan er ook een actie uitgevoerd worden maar er wordt een waarde (zie Datatypes) geretourneerd.

    27-03-2013 om 00:00 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 5/5 - (2 Stemmen)
    Categorie:VBA Visual basic for applications
    >> Reageer (0)
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.VBA Data Types

    VBA Datatypes wijken gedeeltelijke af van deze in VB en VB.net niettegenstaande men soms dezelfde naam gebruikt !


    Datatype Omvang Info Naam conventie
    Byte 1 byte 0 tot 255 Dim bytNummer as Byte
    Boolean 2 bytes True of False Dim blnWaar as Boolean
    Integer 2 bytes -32.768 tot 32.767 Dim intGetal as Integer
    Long 4 bytes geheel getal + en - Dim lngGetal as Long
    Single 4 bytes na de komma Dim sngGetal As Single
    Double 8 bytes na de komma Dim dblGetal as Double
    Currency 8 bytes valuta Dim curGeld As Currency
    Date 8 bytes Dim datDatum as Date
    Object 4 bytes Een refentie naar object Dim objNaam As Object
    String 10 bytes + lengte Dim strLetters as String
    String vast Lengte Tot 65.400 Dim strVastLengte As String * 10
    Variant 22 bytes Dim varGelijkWat As Variant
    User defined Afhankelijk van bepalingen Dim udtZelfGemaakt As ZelfGemaakt

    27-03-2013 om 00:00 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 4/5 - (3 Stemmen)
    Categorie:VBA Visual basic for applications
    >> Reageer (0)
    Klik hier om een link te hebben waarmee u dit artikel later terug kunt lezen.Wat is VBA

    Wat is VBA

    VBA is een objectgeoriënteerde  programmeer taal. Men kan een volledige datastructuur met datatypes en  bewerkingen definiëren. Men kan ook met andere objecten werken voor zover er in  VBA een referentie naar gelegd wordt. Deze worden gevisualiseerd in de object  browser.
    VBA is beschikbaar in alle Microsoft Office programma's, en ieder programma  beschikt over een code Editor die kan geopend worden door Alt+F11 te drukken.

    Ieder object kan beschikken over meerdere  eigenschappen (properties), bepaalde kunnen gewijzigd worden, andere  kunnen enkel gelezen worden. Evenzo beschikt ieder object in Access over  eigenschappen, voorbeeld het formulier-object heeft een caption (opschrift),  breedte, hoogte, achtergrondkleur enz , eigenschap.

    Op objecten kunnen ook methodes  (methods) toegepast worden, welke een actie met het object tot stand  brengen. Zo heeft het DoCmd-object van Access de Beep, OpenForm...enz methode.

    Een Event of gebeurtenis doet  zich voor wanneer een actie met het object plaatsgrijpt,bijvoorbeeld een  formulier die opent.

    Een programma maakt ook gebruik van  variabelen. Voor een variabele wordt in het geheugen een plaats  gereserveerd waar een waarde kan gestockeerd worden. Dit doet men aan de hand  van het de Dim verklaring. Door een geschikte naam  te geven wordt de code leesbaarder. Aan variabelen kunnen verschillende datatypes toegekend worden. Men kan de efficiënte  van de code in de handwerken door de juiste datatypes te hanteren. Het is ten  zeerste aangeraden variabelen te declaren en de het juiste datatype toe te  wijzen, wijst men geen dattype toe dan kent VBA automatisch het datatype variant  toe. Het variant datatype reserveert van alle andere datatype het meeste  geheugen, en laat de code daardoor minder performant werken.
    Door bovenaan een module 'Option Explicit' te vermelden legt men zichzelf de  discipline de variabelen uitdrukkelijk te declaren

    27-03-2013 om 00:00 geschreven door Toon

    0 1 2 3 4 5 - Gemiddelde waardering: 5/5 - (1 Stemmen)
    Categorie:VBA Visual basic for applications
    >> Reageer (0)


    Archief per week
  • 29/04-05/05 2013
  • 08/04-14/04 2013
  • 01/04-07/04 2013
  • 25/03-31/03 2013

    E-mail mij

    Druk op onderstaande knop om mij te e-mailen.


    Gastenboek

    Druk op onderstaande knop om een berichtje achter te laten in mijn gastenboek


    Blog als favoriet !


    Blog tegen de regels? Meld het ons!
    Gratis blog op http://blog.seniorennet.be - SeniorenNet Blogs, eenvoudig, gratis en snel jouw eigen blog!