Mensi problem s jednoduchym overovacem rodnych cisel (VB 2005 Express)   zodpovězená otázka

VB.NET

Zdravim,probirame uz od zacatku roku ve skole Visual Basic,konkretne verzi 2005,dnes jsem dostal za ukol udelat program,co overi,zda-li je rodne cislo platne,program jako takovy funguje,ale na konci mi to vzdycky jeste hodi msgbox s cislem 1,nevite proc? Zde je muj kod programu:

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MsgBox(overit(TextBox1.Text))
    End Sub

    Private Function overit(ByVal celecislo As String)

        If Not celecislo.Contains("/") Then
            Return MsgBox("Vaše rodné číslo prosím udávejte s lomítkem")
        End If
        Dim lomitko As String = celecislo.IndexOf("/")
        Dim bezlomitka As String = (celecislo.Substring(0, lomitko) & celecislo.Substring(lomitko + 1))
        If bezlomitka.Length <> 10 Then
            Return MsgBox("Promiňte,ale rodné číslo musí obsahovat přesně 10 číslic (Lomítko se nepočítá za číslici)")
        End If
        If bezlomitka Mod 11 = 0 Then
            Return MsgBox("Vaše rodné číslo je platné")
        Else
            Return MsgBox("Neplatné rodné číslo")
        End If
    End Function
End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Msgbox to vyhazuje protože při stisknutí tlačítka Button1 otevíráte msgbox.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MsgBox(overit(TextBox1.Text))
    End Sub

Vy voláte funkci které předáte parametry a návratová hodnota z této funkce se vepíše do msgboxu. Ale další msgboxy vyhazujete i přímo v té funkci.

Buď volejte pouze funkci bez msgboxu (v takovém případě můžete změnit Private Function na Private Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       overit(TextBox1.Text)
    End Sub

A nebo v té funkci nevracejte returnem msgbox. Tzn. všude kde je Return Msgbox("nějaký text") smažte a vracejte jenom ten string který se vepíše do toho textboxu v události click tlačítka Button1.

Tzn. něják takto:

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MsgBox(overit(TextBox1.Text))
    End Sub

    Private Function overit(ByVal celecislo As String)

        If Not celecislo.Contains("/") Then
            Return "Vaše rodné číslo prosím udávejte s lomítkem"
        End If
        Dim lomitko As String = celecislo.IndexOf("/")
        Dim bezlomitka As String = (celecislo.Substring(0, lomitko) & celecislo.Substring(lomitko + 1))
        If bezlomitka.Length <> 10 Then
            Return "Promiňte,ale rodné číslo musí obsahovat přesně 10 číslic (Lomítko se nepočítá za číslici)"
        End If
        If bezlomitka Mod 11 = 0 Then
            Return "Vaše rodné číslo je platné"
        Else
            Return "Neplatné rodné číslo"
        End If
    End Function
End Class

Možná tam bude nějaký překlep, píšu to naslepo.

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Dekuji mnohokrat :) Jsem holt zapomnel ze tam mam ten msgbox dvakrat,no kazdy prece jen dela chyby.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback