Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

.- na a - jak poprawnie napisać pętle w vb

michal_1982 22 Gru 2013 19:54 2091 20
  • #1 22 Gru 2013 19:54
    michal_1982
    Poziom 8  

    Jak poprawnie napisać pętle zmieniającą poszczególne znaki na ciągi znaków

    Np. Po wpisaniu w kontrolce textbox1.text kropki i kreski
    w kontrolce textbox2.text wyświetli się "a"

    Poniżej kod ale coś niedziała



    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0 20
  • #2 22 Gru 2013 21:05
    rufek90
    Poziom 24  

    zdebuguj program i sprawdź po kolei, jakie wartości ma zmienna "c".
    Prawdopodobnie jest rozbijana na pojedyncze znaki, dlatego nie znajduje nigdy ciągu dwóch znaków.

    Mówię oczywiście o tym fragmencie:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Postaw sobie breakpointa w tym miejscu i sprawdzaj, jakie wartości przyjmuje c. Tak najszybciej znajdziesz błąd.

    Skoro do tej pory nie zdebugowałeś to znaczy, że może nie umiesz. Jak nie chcesz umieć, to zrób sobie po prostu labela na formie i w pętli for each dopisz coś w stylu:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    Kod pisany z głowy, i z c#, więc po jakiejś kosmetycznej przeróbce do vb powinie śmigać. Po całym przebiegu pętli powinieneś w labelu mieć pojedyncze stringi, które są po kolei sprawdzane w case.

    0
  • #3 22 Gru 2013 22:11
    2341115
    Użytkownik usunął konto  
  • #4 23 Gru 2013 19:39
    michal_1982
    Poziom 8  

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    Zmienione jak kolega doradzał ale dalej jest błąd

    0
  • #5 23 Gru 2013 19:53
    JRV
    Specjalista - VBA, Excel

    Witam
    Przepraszam, Pan chce odczytać kod Morse w tekst?
    Jeśli tak, to całe słowo lub pojedynczych liter?

    0
  • #6 23 Gru 2013 20:10
    michal_1982
    Poziom 8  

    Da się zrobić całe słowo.Nie trzeba tworzyć słowników tyle tylko niewiem jak ułożyć kod zmieniający np .- na litere a

    bądz wyraz składjący się z .---... na słowo

    0
  • #7 23 Gru 2013 20:54
    JRV
    Specjalista - VBA, Excel

    Słownik zgodności Morse do pisma nadal musi być, Pan nie zmieści się tylko ".-" i ewentualnie inne kody(...- , -.- , ... , -- , i t.d.)
    do pracy funkcji , musisz przypisać wynik funkcji
    ....
    tlumacz=r
    End Function

    0
  • #8 23 Gru 2013 22:04
    michal_1982
    Poziom 8  

    chce, by kod był tłumaczony na całe wyrazy np.po spisaniu ...---... wyświetli się sos,chodzi mi również o to bym przy adaptowaniu funkcji uzyskał z każdego znaku litere i słowa tzn. ciągi wyrazowe

    np po wpisaniu w kontrolce textbox1.text .- ... ... ---

    wynik w kontrolce textbox2.text a s s o

    Na przykład

    0
  • #9 23 Gru 2013 22:43
    adamas_nt
    Moderator Programowanie

    Pytanie: jak "wytłumaczyć" Visual'owi, że "..." to "s" a nie "eee"? Musisz, jak sugeruje kolega JVR, rozkodowywać oddzielnie, rozdzielając Np spacją (zawsze).
    Czyli:
    "..." = s
    ". . ." = eee

    0
  • #10 24 Gru 2013 11:17
    michal_1982
    Poziom 8  

    czyli?gdzie zastosować spacje

    tu

    Private Function tlumacz(ByVal tekst As String) As String
    Dim r As String = String.Empty
    Dim c as String
    For Each c In tekst
    If c = ". -" + Strings.Right(c, c.Length - 2) Then
    r += "a"
    ElseIf c = "b" + Strings.Right(c, c.Length - 1) Then
    r += "2"
    ElseIf c = "c" + Strings.Right(c, c.Length - 1) Then
    r += "3"
    ElseIf c = "d" + Strings.Right(c, c.Length - 1) Then
    r += "4"
    Else
    r += c
    End If
    Next
    Return r

    0
  • #11 24 Gru 2013 19:06
    JRV
    Specjalista - VBA, Excel

    Wesołych Świąt!

    michal_1982 napisał:
    np.po spisaniu ...---... wyświetli się sos

    nie, ponieważ nie jest ona oddzielona przez coś oddzielne kody ... --- ...
    potrzebujesz pętli w nim się znaleźć spacje w linii(funkcia Instr, Mid albo Split), pokroić po nych na cząstki i porównać te z tabelą zgodności
    gotowy nie może pokazać, bo słaby w .NET

    0
  • #12 25 Gru 2013 17:13
    michal_1982
    Poziom 8  

    A jak to wygląda w kodzie?

    0
  • #13 25 Gru 2013 19:21
    JRV
    Specjalista - VBA, Excel

    Witam
    nie mam praktyki w .NET ale myślę, że to będzie coś takiego:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #14 25 Gru 2013 19:48
    michal_1982
    Poziom 8  

    ublic Class Form1

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    label1.text = tlumacz(TextBox1.Text)
    End Sub



    Private Function tlumacz(ByVal tekst As String) As String
    Dim r As String = String.Empty
    Dim c As String
    Dim i As Integer
    Dim p As Integer = 1
    Dim mors() As String = {".-", "...-", "--.", "...", "---"} 'Tutaj są obniżone i ewentualnie poza całą Morse
    Dim alfa() As String = {"a", "b", "c", "s", "o"} 'To lepiej, aby określić, jak globalne zmienne
    While p > 0
    p = InStr(tekst, " ")
    c = Trim(p)
    For i = 0 To 4
    If mors(i) = c Then r += alfa(i) : Exit For
    Next
    tekst = (Len(tekst - p))
    End While
    For i = 0 To 6

    If mors(i) = Trim(tekst) Then r += alfa(i) : Exit For
    Next
    Return r
    End Function

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

    wartość tekst niestety wywala error

    End Sub
    End Class

    Dodano po 4 [minuty]:

    po zmianie wartości i pozbyciu się niepotrzebnych wartości tekst pokazuje się break bądz contyn...coś tu jest nie tak

    0
  • #15 25 Gru 2013 19:53
    JRV
    Specjalista - VBA, Excel

    nie mam zainstalowano VB .NET, przed 'label1.text = tlumacz(TextBox1.Text)' wejść MsgBox TextBox1.Text i zobaczyć, co będzie

    ile Pan współpracuje z VB .NET? można rozpocząć coś prostszego?

    0
  • #16 25 Gru 2013 20:06
    michal_1982
    Poziom 8  

    tu

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
    jest błąd

    Dodano po 8 [minuty]:

    zaczynam z tym językiem programowania.Wcześniej z Delphi .turbo pascal

    jest coś prostrzego?

    Wesołych Świąt życzę

    0
  • #17 25 Gru 2013 20:15
    JRV
    Specjalista - VBA, Excel

    If mors(i) = trim(tekst) Then
    Napisz przed tym MsgBox tekst
    i zdjęcie ekranu pokaż

    Dodano po 7 [minuty]:

    michal_1982 napisał:
    For i = 0 To 6
    If mors(i) = Trim(tekst) Then r += alfa(i) : Exit For

    Tutaj błąd musi byc for i=0 to 4
    zależy od liczby znaków w mors i alfa

    0
  • #18 25 Gru 2013 20:19
    michal_1982
    Poziom 8  

    Pokazuje tylko jedną litere. Po wpisaniu . kropki wyświetlq się tylko litera a

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0
  • #19 25 Gru 2013 20:28
    JRV
    Specjalista - VBA, Excel

    Dzisiaj jest mało prawdopodobne, aby pomóc, mam zainstalowac vb.net
    Może wśród wydarzeń jest TextBox1_KeyUp? do uruchomienia funkcja tlumach , jeśli KeyCode = 13
    Nadal Pan tutaj?
    Left a Right nie działa dla mnie, używane jest Mid

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #20 26 Gru 2013 12:28
    2341115
    Użytkownik usunął konto  
  • #21 26 Gru 2013 15:42
    michal_1982
    Poziom 8  

    Gratuluje !!! o to chodzilo

    0