Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Jako lasku :p

Sivun loppuun

tekojalka [25.12.2003 17:46:48]

#

Miksi Visual Basic pysty suorittamaan " 1 / 60 " jakolaskua?

rndprogy [25.12.2003 18:02:02]

#

Miten niin ei pysty. Missä yriti tota suorittaa?

Blaze [25.12.2003 18:05:21]

#

Miten niin ei pysty? MsgBox 1 / 60 antaa messulaatikon, jossa lukee 1,66666666666667E-02, kuten pitääkin.

tekojalka [25.12.2003 18:22:38]

#

Private Sub Command1_Click()
Dim sek As Long
sek = 1 / 60
MsgBox "Yksi sekunti on " & sek & " minuuttia."
End Sub

en tiedä mitä tuossa on vikana

Antti Laaksonen [25.12.2003 18:26:19]

#

Vika on muuttujan tyypissä: Long-tyyppisessä muuttujassa voi olla ainoastaan kokonaislukuja. Siksi tuonkin jakolaskun tulos pyöristetään kokonaisluvuksi. Muuta muuttujan tyypiksi Single tai Double, niin johan toimii.

tekojalka [25.12.2003 18:36:05]

#

kiitti

tekojalka [25.12.2003 19:46:18]

#

Private Sub Command1_Click()
Dim day As Single
day = 1 * 60 * 60 * 24
MsgBox "" & day * Text1.Text & " sekuntia."
End Sub

tuossakin koodissa ilmeni joku vika. mikä?

hunajavohveli [25.12.2003 19:56:36]

#

lainaus:

day = 1 * 60 * 60 * 24
MsgBox "" & day * Text1.Text & " sekuntia."

Meinaatko overflowta tuossa day-lausekkeessa? Entäs tuo seuraava rivi. Siitä on paha ottaa selvää, kun syntaksit on kaikki ihan pielessä.
Ei MsgBox voi toimia noin. SIihen täytyy pistää lauseke:
muuttuja = Msgbox(day * Text1.Text)

Edit: Ja nuo lainausmerkit " voi laittaa vaan kun kirjoittaa tekstiä. Niitä ei voi olla kahta peräkkäin, tai siis... jaa no en osaa kyllä neuvoa, kun ei saa selvää mitä koodin pitäisi näyttää.

hunajavohveli [25.12.2003 20:02:19]

#

No okei joo... pistä noin.

teksti = Str$(day * Val(Text1.Text)) + " sekuntia."

Overflowsta en tiedä. Se menee yli ymmärryksen, eihän siitä edes tule kovin isoa lukua.

Edit:

Niin ja tietysti:
a = MsgBox(teksti)

tekojalka [25.12.2003 20:03:11]

#

day = 1 * 60 * 60 * 24

en tiedä mutta ohjelma valittaa tuosta jotain

hunajavohveli [25.12.2003 20:04:19]

#

Joo no ainakin voit erotella laskun näin:

day = 60 * 60
day = day * 24

ykkösellä kertomisen voi jättää pois, koska mikään luku ei muutu ykkösellä kerrottaessa.

Antti Laaksonen [25.12.2003 20:53:54]

#

Ongelmana lienee se, että tuloksena oleva luku mahtuisi kyllä muuttujaan, mutta lukujen oletustyyppi taitaa (merkillistä kyllä) olla Integer. Korjaa rivi esim. näin; nyt lukujen tyypiksi tulee Single, koska ! on Single-tyypin tunnus.

    day = 60! * 60 * 24

MsgBox-komennon käytössä tai missään muussakaan ei kylläkään minusta ole vikaa.

tekojalka [25.12.2003 20:55:13]

#

sain jo korjattua homman

hunajavohveli [25.12.2003 21:32:41]

#

Oletustyyppi Integer? Eikös kaikki muuttujatkin ole oletukselta SINGLE:jä?


Sivun alkuun

Vastaus

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

Tietoa sivustosta