Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Tulokset vaihtelevat eri suorituskerroilla[VB6] (VB.NET)

Sivun loppuun

jaanas [17.09.2010 10:34:12]

#

Hei,
olen tehnyt käyrän sovitus ohjelman. Nyt ongelmana on se, että saadut tulokset ovat erilaisia eri suorituskerroilla. Lähtötiedot (mm. alkuarvaukset) ovat aina samat. Mistähän tämä voisi johtua?

Metabolix [17.09.2010 10:57:37]

#

Kyllä sen vian on löydyttävä omasta koodista. Olet varmaankin jo tarkistanut, ettet käytä mitään satunnaislukuja tai esimerkiksi ajastimia?

jaanas [17.09.2010 11:09:04]

#

en käytä satunnaislukuja enkä ajastimia.

Metabolix [17.09.2010 11:12:22]

#

Yksi mieleen tuleva vaihtoehto ovat vielä muuttujat, joille ei aseteta lainkaan alkuarvoa. (Vai alustaako VB6 ne automaattisesti?) Tarkista varmuuden vuoksi, ettei mitään muuttujaa käytetä, ennen kuin siihen on sijoitettu jotain (vaikka nolla).

Jos tämäkään ei auta, rupea tulostelemaan muuttujien arvoja eri kohdissa koodia ja etsi tällä tavalla sitä kohtaa, jossa erot ilmestyvät ensimmäisen kerran.

jaanas [17.09.2010 11:29:40]

#

minä luulen, että alkuarvottomat muuttujat alustetaan automaattisesti arvoon nolla ,false jne. Ihan varma tästä en ole, olen nyt etsinyt koodista näitä alkuarvottomia, muttei niitä löydy.

Triton [17.09.2010 12:00:02]

#

Eikös ainakin VB:n vanhemmissa versioissa (sisältäen VB6) muuttujat määritellä seuraavan näköisellä rakenteella:

Dim nimi As Tyyppi

Tällöin voisi ajatella, ettei niihin tarvitsisi erikseen enään alkuarvoa antaa...

Edit. Ainakaan VB4 manuskasta ei osunut silmään mitään muuttujien alkuarvojen antamisesta.

Metabolix [17.09.2010 12:50:19]

#

Muuttujat voi useissa Basic-kielissä (en tiedä juuri VB6:sta) alustaa seuraavasti:

Dim luku As Integer = 123

Jos asiassa on mitään epäselvää, voisi olla viisainta käyrän sovituksen alussa sijoittaa jokaiseen muuttujaan vielä se nolla, ettei vain käy niin, että niissä on jostain syystä odottamattomia lukuja. Jos käytät globaaleja muuttujia ja "peräkkäiset ajokerrat" eivät tarkoita ohjelman eri käynnistyskertoja vaan samalla käynnistyksellä peräkkäin tehtyjä laskuja, muuttujiin jäävät vanhat arvot.

Grez [17.09.2010 12:57:02]

#

Ainakaan VB6:ssa niitä ei voi itse alustaa määrittelyn yhteydessä, mutta toisaalta ne alustetaan aina 0:ksi, tyhjäksi merkkijonoksi tms, riippuen muuttujan tyypistä.

VB.Netissä ne voi alustaa Metabolixin ilmoittamalla tavalla, joskin siinäkin esim. Integer saa arvon 0, jos sitä ei itse alusta.


Sivun alkuun

Vastaus

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

Tietoa sivustosta