Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: ISBN- ongelma

tinke8 [20.10.2010 14:30:11]

#

Nyt tarvitsisin hieman neuvoja ohjelmoinnin suhteen. Yritän tehdä ohjelman, joka lukisi ISBN 13- luvusta teoksen tekokielen ja itse luvun kelpoisuuden. Ongelmana on kuitenkin se, että testivaiheessa en saa kyseistä ohjelmaa edes käyntiin. Saan valituspalkkiin kolme erilaista ilmoitusta, jotka ovat varmaankin syynä, mutta itse en ole saanut selville mitä ne tarkoittavat. Voisiko siis joku selventää minulle mitä ne tarkoittavat? Aliohjelman on tarkoitus tehdä ISBN 13:n virallinen laskukaava, mutta yritän näin testivaiheessa pelkästään sitä, että se hyväksyisi pelkästään numeron 3 ja palauttaisi vastauksena joko aidon tai väärän. Tässä kuva ongelmastani:

http://img580.imageshack.us/img580/7361/ongelma.jpg

tgunner [20.10.2010 15:03:09]

#

Antti teki aikoinaan koodivinkin ISBN-numeron oikeellisuutta koskien. Tekokieltä se ei kuitenkaan selvitä.

muoks. ai hups! Silmien hieromisen jälkeen sain selville, mitä oikeasti hait takaa viestilläsi.

En ole VB-maisteri, mutta näyttää siltä, että olet mennyt hieman sekaisin muuttujien nimien kanssa. Rivi strAITO = AITO(strISBN) antaa parametrina muuttujan strISBN, mutta sen nimi AITO-funktiossa on strAITO. Teet kuitenkin vertauksen rivillä 26 käyttäen nimeä strISBN.

Joku muu varmaan osaa selvittää kaksi muuta virhettä. En kehtaa nopean googlettamisen jälkeen sanoa mitään varmaa, mutta return-lausekkeesi vaikuttaa oudolta. Mikset vain palauta merkkijonoja "aito" tai "väärä"? Vai onko return strAITO = "väärä" joku VB:n hassutus?

Metabolix [20.10.2010 15:19:47]

#

Ensimmäinen virhe kertoo, että muuttujaa strISBN ei ole olemassa. Kaksi muuta virhettä valittavat siitä, että yrität palauttaa totuusarvon (Boolean, tulos vertailusta kuten strAITO = "aito"), vaikka funktion pitäisi palauttaa teksti (suoraan "aito").

Kaikki virheet johtuvat siitä, että jälkimmäinen funktio on aivan pielessä. Funktion kuuluisi mennä näin:

Function AITO(strISBN As String) As String
    If strISBN = "3" Then
        Return "aito"
    Else
        Return "väärä"
    End If
End Function

Parametrina on siis ISBN-numero, ja If-lauseen mukaan funktio palauttaa tekstin "aito" tai "väärä".

Oikeastaan funktion paluuarvon tyypiksi pitäisi vaihtaa Boolean ja sen pitäisi palauttaa True tai False. Main-funktiossa pitäisi tällöin olla If-lause, jossa tulostettaisiin tuon paluuarvon mukaan "aito" tai "väärä".

Vastaus

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

Tietoa sivustosta