Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [VB2008] aloittelijan ongelma muuttujien kanssa

Tumettaja [17.12.2008 22:14:46]

#

Heipodei!

Latasin tänään ensimmäistä kertaa ilmaisen Visual Studio 2008 Expressin ja olen
päässyt sillä leikkiessä jo melko hyvin vauhtiin ehtolauseiden yms. kanssa, mutta
en ole vielä onnistunut luomaan muuttujaa.

Luodessani uuden projektin ja yrittäessäni määrittää muuttujaa seuraavasti, valittaa ohjelma virhettä "declaration expected" rivillä 3.

Public Class Form1
    Dim testi As String
    testi = "testilause"
End Class

Mikä siis mättää?

Metabolix [17.12.2008 23:35:30]

#

Sijoituslauseet ja muu toiminnallinen koodi pitää kirjoittaa funktioiden (metodien) sisään. Muuttujan alkuarvon voit kuitenkin antaa jo määrittelyrivillä:

Dim testi As String = "teksti"

Tumettaja [18.12.2008 00:00:00]

#

Kiitoksia avusta ;)

Tumettaja [18.12.2008 22:39:56]

#

Taas ilmeni uusi ongelma jota olen yrittänyt ratkoa tänään tuloksetta.
Käytössäni on siis seuraavanlainen koodi:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim testi As String
        testi = "merkkijono"
    End Sub

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

End Class

Miksi en voi käyttää MsgBox funktiossa jo aiemmin määriteltyä muuttujaa testi?
Yrittäessä suorittaa ohjelmaa tulee virheilmoitus "name 'testi' is not declared".

Metabolix [18.12.2008 23:22:23]

#

Tuossa muuttuja määritellään funktion sisällä, joten se näkyy vain kyseisessä funktiossa ja tuhoutuu funktion lopussa. Sen data ei myöskään säily funktion eri kutsukerroilla. Useammassa funktiossa käytettävä muuttuja pitää määritellä luokan jäsenenä funktioiden ulkopuolella.

Tumettaja [19.12.2008 00:03:59]

#

Kiitos jälleen kerran selvennyksestä, nyt alaa pikkuhiljaa painumaan nuo visual basicin perusteet päähän :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta