Otsikko ei välttämättä kuvaa asiaa kovin selkeästi, mutta tällainen on ongelma:
Kirjastossa on kaksi aliohjelmaa. Toinen aliohjelmista määrittelee tiettyjen muuttujien arvoja, joita käytetään toisessa aliohjelmassa.
Pääohjelma kutsuu ensin kirjastosta määrittelyaliohjelmaa ja sitten varsinaista aliohjelmaa, joka suorittaa toimintonsa määriteltyjen muuttujien perusteella. Mutta nyt näyttäisiä siltä, että muuttujien arvot nollaantuvat sen jälkeen kun kirjastosta on poistuttu, ja määritellyt muuttujat ovat taas nollaantuneet, kun kutsutaan toista aliohjelmaa. Yritin pistää kirjastoon COMMON SHARED:in mutta se ei auttanut.
Niin ja sitten toinen ongelma: Käynnistän QBasicin erään kirjaston parametreillä. Nyt COMMON SHARED ei anna minun "jakaa" muita muuttujia kuin niitä, jotka esiintyvät myös ladatussa kirjastossa.
Mitenkähän tällaiset ongelmat saisi ratkaistua?
Arvaus(ongelma1): Mitä jos määrittelisit muuttujat COMMON SHARED :illa itse ohjelmassa?
On aivan pakko myös kysyä, kuinka "poistutaan kirjastosta"?
Tein kirjaston, jonka alussa on määritelty muuttuja COMMON SHARED -lauseella. Toinen kirjaston aliohjelma muuttaa muuttujan arvon ja toinen tulostaa sen. Ainakin minulla kaikki tuntuu toimivan oikein, kun kutsun pääohjelmasta ensin toista kirjastossa olevaa aliohjelmaa ja sitten toista. Jos taas laitan myös pääohjelmaan samanlaisen COMMON SHARED -määrittelyn, muuttujan arvo on käytössä myös pääohjelmassa.
Joo näyttäisi pelaavan, mutta entäs tuo toinen ongelma? COMMON SHARED toimii ainoastaan niihin muuttujiin, jotka löytyy kirjastosta ja se on aika kummallinen juttu minun mielestäni.
Rupesin tuossa kuitenkin vielä miettimään, että miksi esim LameVGA:ssa pitää laittaa vain VgaInit ja VgaExit, eikä mitään COMMON SHARED:eja? Johtuuko se siitä Lame.bi-tiedostosta? Ja jos johtuu, niin miten sellainen .bi-tiedosto tehdään?
Aihe on jo aika vanha, joten et voi enää vastata siihen.