'Deze array bevat de tekens waarvoor een morse vertaling bestaat 'We kennen nog geen dimensie toe Dim msarrTeken() As String 'Deze array bevat de vertaling van elk teken in de vorige array 'We kennen nog geen dimensie toe Dim msarrMorse() As String Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load InitApplicatie() End Sub Private Sub InitApplicatie() '1. Haal de volledige naam van het morsebestand uit de registry op ' en toon deze op de form txtBestandsnaam.Text = GetMorseFileFromRegistry() '2. Enable en disable de controls EnableDisableControls() End Sub Private Sub btnzoeken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnzoeken.Click 'Kies een nieuw morse-bestand KiesMorseBestand() End Sub Private Function GetMorseFileFromRegistry() As String 'Haal de locatie van de conversiefile uit de registry op 'application section key default Return GetSetting("MorseVertaler", "Files", "Conversiefile", "") End Function Private Sub SetMorseFileInRegistry(ByVal sVolNaam As String) 'Bewaar de morse-conversiefile in de registry SaveSetting("MorseVertaler", "Files", "Conversiefile", sVolNaam) End Sub Private Sub LeesBestandIn(ByVal sBestandsnaam As String) 'De Lisbox ledigen lstMorse.Items.Clear() 'Bestaat de file If System.IO.File.Exists(sBestandsnaam) Then 'Tel de lijnen in de file Dim iAantalLijnen As Integer iAantalLijnen = GetAantalLijnen(sBestandsnaam) 'De arrays dimensioneren ReDim msarrMorse(iAantalLijnen - 1) ReDim msarrTeken(iAantalLijnen - 1) 'StreamReader aanmaken Dim srMorse As New System.IO.StreamReader(sBestandsnaam) 'Lees alle lijnen uit de file 'en verwerk elke ingelezen lijn Dim iLijn As Integer = 0 Dim sLijn As String 'Eerst een lijn lezen vooraleer we de lus binnengaan sLijn = srMorse.ReadLine() 'Lijnen inlezen en verwerken 'totdat we aan het einde van het bestand komen 'Op dat ogenblik gaat de streamreader Nothing returnen Do While Not sLijn Is Nothing 'Do Until sLijn Is Nothing 'gaat ook If sLijn <> "" Then VerwerkLijn(sLijn, iLijn) End If 'Volgende lijn lezen sLijn = srMorse.ReadLine() iLijn += 1 Loop 'streamreader sluiten srMorse.Close() End If 'De controls enablen en disablen EnableDisableControls() End Sub Private Function GetAantalLijnen(ByVal sBestandsnaam As String) As Integer 'StreamReader aanmaken Dim srMorse As New System.IO.StreamReader(sBestandsnaam) 'Tel het aantal lijnen in deze file Dim iAantal As Integer = 0 Dim sLijn As String sLijn = srMorse.ReadLine Do While Not sLijn Is Nothing iAantal += 1 sLijn = srMorse.ReadLine Loop 'File sluiten srMorse.Close() 'Aantal returnen Return iAantal End Function Private Sub VerwerkLijn(ByVal sLijn As String, ByVal iIndex As Integer) 'Plaats het teken in de array msTeken msarrTeken(iIndex) = sLijn.Substring(0, 1) 'Plaats de morsevertaling in de array msMorse msarrMorse(iIndex) = sLijn.Substring(2) 'Voeg deze gegevens ook aan de listbox toe lstMorse.Items.Add(msarrTeken(iIndex) & " " & msarrMorse(iIndex)) End Sub Private Sub EnableDisableControls() 'Men kan maar tekst ingeven, als er een vertalingslijst is If lstMorse.Items.Count = 0 Then txtInput.Enabled = False Else txtInput.Enabled = True End If End Sub Private Sub KiesMorseBestand() 'De openFileDialoog instellen '- De InitialDirectory ofdMorseBestand.InitialDirectory = GetMorseFileFromRegistry() 'De openFileDialoog tonen If ofdMorseBestand.ShowDialog() = DialogResult.OK Then 'Als de gebruiker een bestand heeft gekozen 'Bewaren we de volledige naam in het register SetMorseFileInRegistry(ofdMorseBestand.FileName) 'en tonen we de volledige naam in het tekstvak txtBestandsnaam.Text = ofdMorseBestand.FileName End If End Sub Private Sub txtBestandsnaam_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBestandsnaam.TextChanged 'Bestand wijzigt, dus opnieuw inlezen LeesBestandIn(txtBestandsnaam.Text) 'Enable disable controls EnableDisableControls() End Sub Private Sub txtInput_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtInput.TextChanged 'Vertaal de ingegeven tekst txtMorse.Text = VertaalTekst(txtInput.Text) End Sub Private Function VertaalTekst(ByVal sTekst As String) 'Doorloop de letters van de tekst en vertaal ze één voor één Dim sResult As String, iTeller As Integer For iTeller = 0 To sTekst.Length - 1 sResult &= VertaalLetter(sTekst.Substring(iTeller, 1)) & " " Next 'Return de vertaalde tekst Return sResult End Function Private Function VertaalLetter(ByVal sTeVertalenLetter As String) As String 'Zoek het te vertalen teken op in de array msarrTeken Dim iTeller As Integer For iTeller = 0 To msarrTeken.Length - 1 'Indien gevonden, return de overeenkomstige vertaling in morse If msarrTeken(iTeller).ToLower() = sTeVertalenLetter.ToLower() Then Return msarrMorse(iTeller) End If Next 'Teken is niet gevonden, we returnen een ? Return "?" End Function End Class