deklarace   zodpovězená otázka

VB.NET

dobrý den mám problém ve zdrojové m kodu mi nechce jit nadeklarovat promenna nebo spiš nevim jak ji deklarovat dycky dyš to nějak zkusim "I" zustane podtržené a nápověda říká I is not deklaret

pokud někdo víte co s tim tak děkuji za radu

Public Class Form1

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim slovo As String
        slovo = "ahoj"
        For I = 1 To Len(slovo)
            Select Case LCase(Mid(slovo, I, 1))
                Case "a"
                    MsgBox("a")
                Case "h"
                    MsgBox("h")
                Case "o"
                    MsgBox("o")
                Case "j"
                    MsgBox("j")
                Case Else
                    MsgBox("Tento znam '" & LCase(Mid(slovo, I, 1)) & "' neznám")
            End Select
        Next I
    End Sub

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

    End Sub
End Class

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

Mě to běží bez problému. (A jak tak koukám, vy jste asi taky někam musel běžet, když jste to psal. Tak strašný pravopis je málem unikátní)

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

za pravopis se omlouvám ale mě to "I" podtrhne a pak mi to nevim proč nejde

neschází mi něco na formuláři? mám tam jen textbox

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

A což takhle zkusit to I skutečně nadeklarovat? Třeba:

...
For I as Integer = 1 To Len(slovo)
...

Ono to,že někomu to jede a někomu ne, může být způsobeno tím, že, pokud se nepletu, ve studiu se dá nastavit (v kartě projektu, na záložce security, nebo tak nějak), je-li vyžadována striktní deklarace proměnných před jejich použitím, nebo systém nenadeklarovanou proměnnou pardonuje (a nadeklaruje si ji až ve chvíli prvního použití podle toho, co tam vložíme).

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

Jenom oprava - teď jsem se díval, to nastavení je na kartě Compile pod přepínačem "Option explicit"

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

já děkuji nadeklaroval jsem to s vaší pomocí a funguje to super jen nemužu najít kde přidám windowe media pleyer jednou sem to našel a ted mi to asi někam uteklo

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

Dejte si tam solution explorer, klikněte pravým na projekt, zvolte properties. Na kartě references zvolte něco jako "Add reference" a hledejte tuším že "WMP Core", teď opravdu nevím jak se to jmenuje, ale když jste to už jednou našel, tak Vás to jistě praští do očí až to zahlédnete. Anebo taky můžete v toolboxu kliknout (pravým) na "Add Items" a v dialogu najít ten prvek a máte ho natrvalo v toolboxu jako já.

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

Je možné doplnit deklaraci přímo do cyklu.:


For I as Integer = 1 To Len(slovo)


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

Všem důrazně doporučuji opustit staré přežitky z VB6 a používat nativní funkce .NET frameworku pro práci s řetězci! Jsou rychlejší a navíc staré funkce nemusí být v příštích verzích Visual Basicu podporovány! Konkrétně jde o Len, LCase, Mid, Left, Right, InStr a InStrRev.

Cyklus tedy bude vypadat takto:

        For i As Integer = 0 To slovo.Length - 1
            Select Case slovo(i).ToLower()
                Case "a"
                    MsgBox("a")
                Case "h"
                    MsgBox("h")
                Case "o"
                    MsgBox("o")
                Case "j"
                    MsgBox("j")
                Case Else
                    MsgBox("Tento znam '" & slovo(i).ToLower() & "' neznám")
            End Select
        Next 

Více o funkcích pro práci s řetězci najdete v článku http://www.vbnet.cz/clanek--45-prace_s_t... .

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

Skromný dotaz, nemělo by tam být

For i = 0 To slovo.Length-1

resp. s deklarací pak

For i as Integer = 0 To slovo.Length-1

?

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

Jasně, omlouvám se, pro jedno zapomenu na druhé. Opraveno.

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