Een tekstboodschap vertaalt naar morsecode.

Status
Niet open voor verdere reacties.

YaelBer

Gebruiker
Lid geworden
3 mei 2015
Berichten
5
Beste Mensen

Ik heb de opdracht gekregen om een text om te zetten naar morse code. Ik zit echt helemaal vast. Ik weet zelfs niet hoe ik moet beginnen met de messagebox te showen.
Heel veel dank bij voorbaat !

Bekijk bijlage TP_-_SYNTHESE_A.docx
 
Wat weet je al wel van Visual Basic .NET?
 
ik geloof wel dat ik de basis onder de knie heb. zoals variabelen, constaten,lussen,lijsten,functies,try catch....
 
Volgens je bijlage gaat het om het maken van een formulier met een textbox, een button en een listbox:
Morse.jpg

Dat is iets dat je al leert voordat er enige code bij komt kijken.
Als je dat eenmaal hebt kan ik je wel helpen met een functie die tekst omzet naar morsecode.
 
Laatst bewerkt:
Dat ziet er goed uit. Ik heb ooit onderstaande functie gemaakt voor het vertalen van tekst naar morsecode. In de code van de button kan je de tekst die in txtInvoer staat lezen, dan de functie Morsecode aanroepen en de geretourneerde string in txtUitvoer plaatsen.
Code:
Function MorseCode(Target As String) As String
    Dim i As Integer
    
    'De gebruikte punt is een middle dot (Ascii 183)
    
    'Een heel woord
    Select Case UCase(Target)
        Case "FULLSTOP", "FULL STOP": MorseCode = "·-·-·-"
        Case "COMMA": MorseCode = "--··--"
        Case "QUERY": MorseCode = "··--··"
    End Select
    
    'Letters per woord
    If MorseCode = "" Then
        For i = 1 To Len(Target)
            MorseCode = MorseCode & Morse_Code(Mid(Target, i, 1))
        Next i
    End If
End Function

Private Function Morse_Code(Letter As String) As String
    Select Case UCase(Letter)
        Case "A": Morse_Code = "·-"
        Case "B": Morse_Code = "-···"
        Case "C": Morse_Code = "-·-·"
        Case "D": Morse_Code = "-··"
        Case "E": Morse_Code = "·"
        Case "F": Morse_Code = "··-·"
        Case "G": Morse_Code = "--·"
        Case "H": Morse_Code = "····"
        Case "I": Morse_Code = "··"
        Case "J": Morse_Code = "·---"
        Case "K": Morse_Code = "-·-"
        Case "L": Morse_Code = "·-··"
        Case "M": Morse_Code = "--"
        Case "N": Morse_Code = "-·"
        Case "O": Morse_Code = "---"
        Case "P": Morse_Code = "·--·"
        Case "Q": Morse_Code = "--·-"
        Case "R": Morse_Code = "·-·"
        Case "S": Morse_Code = "···"
        Case "T": Morse_Code = "-"
        Case "U": Morse_Code = "··-"
        Case "V": Morse_Code = "···-"
        Case "W": Morse_Code = "·--"
        Case "X": Morse_Code = "-··-"
        Case "Y": Morse_Code = "-·--"
        Case "Z": Morse_Code = "--··"
        Case "0": Morse_Code = "-----"
        Case "1": Morse_Code = "·----"
        Case "2": Morse_Code = "··---"
        Case "3": Morse_Code = "···--"
        Case "4": Morse_Code = "····-"
        Case "5": Morse_Code = "·····"
        Case "6": Morse_Code = "-····"
        Case "7": Morse_Code = "--···"
        Case "8": Morse_Code = "---··"
        Case "9": Morse_Code = "----·"
        Case " ": Morse_Code = "      "  'Ruimte tussen woorden is 7 units
                                        'Hier dus 6 spaties, de laatste komt er hier onder nog bij
    End Select
    
    Morse_Code = Morse_Code & " " 'Ruimte tussen letters is 1 unit
End Function

Dat is in VBA welliswaar maar kan je dan wel ombouwen voor het schrijven naar txtUitvoer.
Dat moet je dan zelf eventueel weer vertalen naar DOT voor de puntjes en DASH voor de streepjes.
Als het niet lukt dan horen we het wel :)
 
Laatst bewerkt:
hij geeft nog 2 fouten en 2x dezelfde. Dus bij het puntje "Letters per woord" en volledig onderaan net boven je end function.
Daar staat er op de melding dat de MorseCode al is toegekend aan een waarde.
 
De code is goed voor VBA, dus kennelijk moet je dan voor vb.Net nog een wijziging aanbrengen.
 
Ik had even wat extra tijd en heb de nodige wijzigingen voor je aangebracht zodat het in vb.Net ook werkt.
Code:
Public Class Form1

    Private Sub btnCoderen_Click(sender As Object, e As EventArgs) Handles btnCoderen.Click
        'MsgBox(txtInvoer.Text)
        txtUitvoer.Text = MorseCode(txtInvoer.Text)
    End Sub

    Function MorseCode(Target As String) As String
        Dim i As Integer
        Dim tmp As String

        'De gebruikte punt is een middle dot (Ascii 183)

        'Een heel woord
        Select Case UCase(Target)
            Case "FULLSTOP", "FULL STOP" : tmp = "·-·-·-"
            Case "COMMA" : tmp = "--··--"
            Case "QUERY" : tmp = "··--··"
        End Select

        'Letters per woord
        If tmp = "" Then
            For i = 1 To Len(Target)
                tmp = tmp & Morse_Code(Mid(Target, i, 1))
            Next i
        End If
        MorseCode = tmp
    End Function

    Private Function Morse_Code(Letter As String) As String
        Dim tmp As String
        tmp = ""
        Select Case UCase(Letter)
            Case "A" : tmp = "·-"
            Case "B" : tmp = "-···"
            Case "C" : tmp = "-·-·"
            Case "D" : tmp = "-··"
            Case "E" : tmp = "·"
            Case "F" : tmp = "··-·"
            Case "G" : tmp = "--·"
            Case "H" : tmp = "····"
            Case "I" : tmp = "··"
            Case "J" : tmp = "·---"
            Case "K" : tmp = "-·-"
            Case "L" : tmp = "·-··"
            Case "M" : tmp = "--"
            Case "N" : tmp = "-·"
            Case "O" : tmp = "---"
            Case "P" : tmp = "·--·"
            Case "Q" : tmp = "--·-"
            Case "R" : tmp = "·-·"
            Case "S" : tmp = "···"
            Case "T" : tmp = "-"
            Case "U" : tmp = "··-"
            Case "V" : tmp = "···-"
            Case "W" : tmp = "·--"
            Case "X" : tmp = "-··-"
            Case "Y" : tmp = "-·--"
            Case "Z" : tmp = "--··"
            Case "0" : tmp = "-----"
            Case "1" : tmp = "·----"
            Case "2" : tmp = "··---"
            Case "3" : tmp = "···--"
            Case "4" : tmp = "····-"
            Case "5" : tmp = "·····"
            Case "6" : tmp = "-····"
            Case "7" : tmp = "--···"
            Case "8" : tmp = "---··"
            Case "9" : tmp = "----·"
            Case " " : tmp = "      "  'Ruimte tussen woorden is 7 units
                                       'Hier dus 6 spaties, de laatste komt er hier onder nog bij
        End Select

        Morse_Code = tmp & " " 'Ruimte tussen letters is 1 unit
    End Function

End Class

De conversie naar DOT en DASH moet nu heel eenvoudig zijn.
 
Laatst bewerkt:
Graag gedaan :)
 
In m'n enthousiasme weer eens niet aan gedacht :o
 
hey, ik heb ook een gelijkaardige oefening. Alleen is het bij mij over ascii-getallen, de tekst is HoGent 1 ELM en dit moet omgezet worden in " 72 79 71 69 78 84 49 69 76 77", deze cijfers zijn ascigetallen. de tekst moest ik met de functie ToUpper omzetten om deze waarden te hebben. Zoud je me willen helpen?
 
Dat is vele malen simpeler. Loop in een loopje de string door en geef iedere letter terug als Asc(Ucase(Letter)) & " "
 
Tekst naar acii

Public Class Form1

Private Sub btnCoderen_Click(sender As Object, e As EventArgs) Handles btnCoderen.Click

If MessageBox.Show("Ongeldige fout, wilt u opnieuw proberen?", "Fout", MessageBoxButtons.YesNo, MessageBoxIcon.Question) Then

End If



Dim Invoer As String = "HoGent 1 ELM".ToUpper
Dim Uitvoer As Integer
Dim sASC As String
Dim strIn As String, strOut As String = "", strFields() As String, i As Integer

strIn = txtInvoer.Text
strFields = Split(strIn, " ")


For i = 0 To UBound(strFields)
sASC = sASC & Chr(strFields(i))


sASC = sASC & CStr(Asc(Mid$(Invoer, i, 1)))

Uitvoer = Len(Invoer)

txtUitvoer.Text = (sASC)
Next
End Sub
End Class
dit is mijn versie van mijn opdracht. Mijn probleem is dat de messagebox moet reageren als de invoer van de textbox leeg is en de andere probleem is dat het gewenste resultaat niet opgesplitst wordt.

Hoe moet ik dat oplossen?
 
Je vraagt er een conditie van de messagebox af in plaats van te kijken of er in de textbox iets is in gevuld ja of nee en daar dan op te reageren.

Voor het converteren naar Ascii heb je trouwens ook niet een array nodig.
Dat kan makkelijker.

Daarnaast is het hier de gewoonte om code tussen code tags te plaatsen.
Maar je bent nieuw, dus het zij je vergeven :)
 
Laatst bewerkt:
Tekst naar acii

mijn excuses ervoor, maar hoe zit dan in mekaar? Want ik geraakt er niet aan uit, hoe ik dat moet doen. Is het wat gelijkaardig als die oefening van daar boven?

Dat ik ieder letters in de ascii-waarden moet zetten? Maar hoe zit het dan met die messagebox
 
Laatst bewerkt:
Dit is de code van een knop op een formulier waar ook 1 Textbox op staat. Als je er op klikt wordt de waarde die je gaf naar Ascii vertaald en in de Textbox getoond.

frm1.jpg

Code:
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Invoer As String = "HoGent 1 ELM".ToUpper
        Dim Uitvoer As String
        Dim Nummer As String

        For i As Integer = 1 To Len(Invoer)
            Nummer = Asc(Mid(Invoer, i, 1))
            If Nummer > 32 Then
                Uitvoer = Uitvoer & Nummer & Space(1)
            End If
        Next

        TextBox1.Text = Uitvoer
    End Sub

Spaties worden niet meegenomen. De ascii waarde van een spatie is 32.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan