Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Muuttujat (Visual Basic)

Sivun loppuun

Dareon [07.03.2005 19:48:27]

#

Minä olen tehnyt sovelluksen, jossa on seuraavanlaista koodia:

Private Sub Command1_Click()
txtYksi = Val(txtToxp) - Val(txtFromxp)
txtKaksi = txtYksi / 5
txtKolme = txtYksi / 18
End Sub

Nyt kun yritän muutta noita txtYksi integereiksi = Dim txtYksi as integer, niin ohjelma herjaa, että se ei onnistu, koska se on käytössä.

Yritin myös toista tapaa, jonka Nomic näytti;

dim luku as integer
luku = text1.text

Tuokaan tapa ei tulosta tuottanut vaan seuraavaksi oli vuorossa virhe invalid outside procedure. Tietääköhän kukaan miten saisin kyseiset boxit integereiksi?

Metabolix [07.03.2005 19:53:43]

#

Yhdistä nuo tavat:

Dim txtYksi As Integer
txtYksi = Val(txtToxp) - Val(txtFromxp)

Val palauttaa muistaakseni Integerin.

Dareon [07.03.2005 19:57:46]

#

Siis nuo txtKaksi ja txtKolme pitäisi saada integereinä. Tai jos ei niin, niin miten saa luvut kokonaisluvuiksi?

Metabolix [07.03.2005 20:00:43]

#

No voi... Ei voi oikein mitään sanoa. Eikö tuosta nyt tullut idea selväksi? Ensin Dim, sitten laitat sen arvon. Vähän omatoimisuutta.

Dim txtKaksi As Integer
Dim txtKolme As Integer
txtKaksi = txtYksi \ 5  ' \ on jakolasku kokonaislukuna
txtKolme = txtYksi \ 18

Ja Integer = Kokonaisluku, jos et sattunut tietämään.

Dareon [07.03.2005 20:03:15]

#

Tuotakin olen koittanut, se jättää ruudut tyhjiksi ja vähänkin pitemmällä lukujonolla se herjaa overflow. Taitaa olla koodissa nyt jotakin pahasti vialla. Koitan selvittää asiaa.

dooDle [07.03.2005 20:10:55]

#

Int() -funktiolla saadaan luku integeriksi(kokonaisluku). Val() -functio palauttaa merkkijonon lukuna.

txtKaksi = Int(txtKaksi)
txtKolme = Int(txtkolme)
Luku = Val("23.15") 'paluttaa luvun 23.15

Jos muuttujaa on jo käytetty ei sitä voida enää alustaa uudestaan.

'tämä ei siis toimi
a = 10 * 20
Dim a As Integer

Tuo errori "Invalid outside procedure" tulee koska osa koodista ei ole minkään subin tai funktion sisällä

kakka = 20 'tämä on väärässä paikassa

Private Sub Form_Load()
'koodia
End Sub

tuomas [07.03.2005 20:28:47]

#

Ja se overflow tarkoittaa sitä, että yrität laittaa siihen integer muuttujaan liian isoa arvoa. integeriin mahtuu luvut väliltä n. -65000 - 65000 (en nyt muista mitään tarkkoja arvoja). Jos tarvitset suurempia lukuarvoja, niin integeriä suurempia ovat long, single ja double (ko. ovat tuossa suuruusjärjestyksessä).

Antti Laaksonen [07.03.2005 20:49:03]

#

tuomas kirjoitti:

integeriin mahtuu luvut väliltä n. -65000 - 65000 (en nyt muista mitään tarkkoja arvoja)

Muistat hieman väärin, alaraja on näet -32768 ja yläraja on 32767. Muiden muuttujatyyppien arvoalueet voi tarkistaa vaikkapa VB-oppaasta.


Sivun alkuun

Vastaus

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

Tietoa sivustosta