Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Taas helppo makrokysymys

Sivun loppuun

talmiid [21.09.2007 08:34:24]

#

Ohjelmointiasioissa lapsen tasolla olevana uskallan esittää teille varttuneille, ensimmäisen ongelmani heti selvittäneille asiantuntijoille, toisenkin pulman:
Ajaessani makroani käsky käskyltä suoritus siirtyy if-riviltä a-muuttujan ollessa järjestelmänkin mielestä "true" suoraan else-kohtaan then-osuuden ohittaen. Miksihän?

if a
   then
         b
   else
         c
end if

talmiid [22.09.2007 10:03:23]

#

Pitää korjata. If-silmukkani on tietenkin seuraavan muotoinen:

if a then
b
else
c
end if

setä [22.09.2007 10:12:36]

#

Kun ajat ohjelmaasi käsky kerrallaan voitko samalla tarkistaa mikä a:n tila todella on.

talmiid [22.09.2007 10:55:41]

#

Kiitos! Ennen if-rivin suoritusta a:n arvo on "true". If-riviltä else-riville tapahtuneen hyppäyksen jälkeen edelleen a:n arvo on "true".

Jos on vapaaehtoinen vastaanottaja, lähetän muutamakymmenrivisen aliohjelmani sähköpostin kautta silmäiltäväksi. Lukuisia omien aliohjelmien kutsuja sisältävänä ohjelmateksti ei tosin ole kovin havainnollinen.

Sami [22.09.2007 12:54:58]

#

Onko se siis "true" (merkkijono, joka sisältää sanan true) vai true (boolean, jonka arvo on tosi)? Jos se on merkkijono, niin tuon toimimattomuus ei ole mitenkään ihmeellistä.

talmiid [22.09.2007 13:19:38]

#

Kiitos! Boolean-tyyppiseksi a on esitelty ja sen mukaisesti järjestelmä ilmoittaa a=true. Ei ilmoita a="true".

setä [22.09.2007 14:39:29]

#

VB:ssä pitäisi tuolla koodilla toimia mutta jos makrossa on jotain eroa. Koitapa varmuuden vuoksi kirjoittaa koodi muotoon:

If a = True Then

talmiid [22.09.2007 14:53:36]

#

Käskystä, kapteeni!
...
Edelleen väärin makro toimii näinkin. Kyllähän VB on pulmia aiheuttanut ennenkin. Tämä vaikuttaa tähänastisista selittämättömimmältä.

setä [22.09.2007 15:22:38]

#

No koitapa vielä näin:

If a = False Then
   c
Else
   b
End If

Joka tapauksessa tuosta reklamaatiota Microsoftille.
Minulla ei ole Officen tuotteita enkä pääse testaamaan.

talmiid [22.09.2007 15:50:07]

#

Kokeilin. Kuinka nyt taas suoritus osaakin hypätä juuri väärään kohtaan, c-käskyyn.

Grez [22.09.2007 16:21:01]

#

Voitko pistää koko koodin jonnekin, niin voisi testata? Millä tavalla olet testannut tuon muuttujan a-sisältöä? Oletko laittanut esim. ihan edelliselle riville

debug.print a

vai jollakin muulla tavalla?

talmiid [22.09.2007 17:21:51]

#

Olen laittanut edelliselle riville. Liikutettaessa ajon aikana ohjausrasian kohdistinta muutttujan arvo näkyy ruudussa kohdistimen ollessa muuttujan nimen päällä.

Muuta paikkaa, minne koodin voin panna, en tiedä, kuin sähköpostilaatikon. Jos olet valmis vastaanottamaan, pyydän ilmoittamaan sähköpostiini.

Blaze [22.09.2007 18:04:09]

#

http://sooda.dy.fi/fpaste/

talmiid [22.09.2007 20:11:19]

#

Yritin lähettää koodin "Makro"-nimisenä edellisessä viestissä mainittua osoitetta käyttäen "Tiedoston liittämisen" kautta. En tiedä, onnistuinko. Ainakin "Yritä näyttää selaimessa" onnistui.

Blaze [22.09.2007 20:26:23]

#

talmiid kirjoitti:

Yritin lähettää koodin "Makro"-nimisenä edellisessä viestissä mainittua osoitetta käyttäen

Me tarvitaan se osote, jonka tuo filupaste lopuks anto.

talmiid [22.09.2007 20:43:23]

#

En havainnut muuta kuin http://sooda.dy.fi

Blaze [22.09.2007 21:08:18]

#

Niinku toi: http://fpaste.dy.fi/?QOs

talmiid [23.09.2007 04:53:47]

#

http://paste.dy.fi/?3RP

Sami [23.09.2007 13:45:26]

#

Käytä samoja muuttujanimiä...
Nyt siellä on rivillä 16:

Kerake0n= (Kelpaa And Käy)

Ja rivillä 17:

If KerakeOn  Then   ’a

Huomaatko noissa Kerakkeissa pienen eron nollan ja ison O-kirjaimen välillä? Rivillä 16 se nimittäin on kirjoitettu nollalla ja rivillä 17 isolla O:lla, eli teet vertailun alustamattoman muuttujan kanssa.

talmiid [23.09.2007 14:10:50]

#

Kiitos, Sami! Olisihan tämä pitänyt arvata! Mieheltä, jonka edellisen ongelman toi ykkösen paikalla oleva pikku L, voi odottaa myös O:n korvautumista nollalla.

Grez [23.09.2007 22:30:15]

#

Saanko kysyä miten ihmeessä 0 ja O ja 1 ja l voi mennä sekaisin koodia kirjoitettaessa. Vai onko noi koodit jostain tulosteesta uudelleennäpytelty tai OCR:llä luettu?

Metabolix [24.09.2007 00:11:46]

#

Tuohon pulmaan tunnetusti auttaa kooditiedoston alkuun kirjoitettava Option Explicit, joka määrää, että kaikki muuttujat on määriteltävä ennen käyttöä, jolloin siis kirjoitusvirheet aiheuttavat ilmoituksen, että kyseistä muuttujaa ei ole.

0 ja O sinänsä voivat mennä sekaisin, että ovat sentään qwerty-asettelussa vierekkäin, mutta l ja 1 on jo pieni ihme.

talmiid [24.09.2007 07:24:26]

#

Kiitos! Olen pitänyt tapanani esitellä kaikki muuttujat ennen käyttöänsä, mutta tästä lähtien kooditiedostoni ensimmäisenä rivinä on Option Explicit. Pienten ihmeitten aika ei tosiaan ole ohi, eikä isojenkaan. Paitsi O ja 0 sekä l ja 1, kummakseni joskus myös ä ja a ovat kirjoituksessani toinen toisensa paikalla.


Sivun alkuun

Vastaus

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

Tietoa sivustosta