Kirjoittaja: Antti Laaksonen
QuickBasicin versiossa 7.1 on mahdollista luoda omia QLB-tunnuksisia kirjastotiedostoja, joissa on aliohjelmia, joita sitten voi käyttää toisissa ohjelmissa. Jokainen kauemmin QBasicilla ohjelmoinut on varmasti törmännyt lähdekoodin kiusalliseen 64 kt:n rajoitukseen. Kirjastoja käyttämällä tämä ongelma poistuu, sillä eri ohjelman osat linkitetään vasta käännösvaiheessa.
Heti tulee pieni esimerkki. Tehdään ensin kirjastotiedosto. Tämä tapahtuu aivan samoin tavoin kuin tavallisen QBasic-ohjelman kirjoittaminen eli QBasic auki ja kirjoittamaan. Esimerkkinä on aliohjelma UkkoNooa, joka soittaa tutun sävelmän.
SUB UkkoNooa PLAY "o3l8cccedddfeeddc" END SUB
Sitten voidaankin jo luoda kirjasto. Kun ohjelma on tallennettu vaikka UKKONOOA.BAS-nimiseksi, painetaan Run-valikosta löytyvää Make Library... -kohtaa. Esiin tuleva ikkuna on melko samannäköinen kuin EXE-tiedostojen kääntämisessä. Uuden kirjaston nimi voi olla vaikkapa UKKONOOA.
Kun kirjasto on luotu, on Qbasicin hakemistoon ilmestynyt kaksi tiedostoa, UKKONOOA.LIB ja UKKONOOA.QLB. Tarvittava tiedosto on UKKONOOA.QLB, ja tämä saadaan mukaan uuteen ohjelmaan käynnistämällä QBasic komennolla
C:\QBASIC\QBX /L UKKONOOA.QLB
Huomaa, että tiedoston on oltava samassa hakemistossa, kuin itse QBX.EXE, jotta se löytyisi. Kirjasto pitää vielä määritellä ohjelman ensimmäisillä riveillä:
DECLARE SUB UkkoNooa ALIAS "UkkoNooa" ()
Ja sitä voidaan kutsua ohjelmasta esimerkiksi seuraavasti:
CALL UkkoNooa
Kun käynnistät ohjelman, pitäisi tietokoneen piipperistä kuulua Ukko Nooa.
Kun tehdään "kunnon ohjelmaa", vaikkapa laajaa peliä, voidaan yhteen kirjastoon laittaa grafiikka-aliohjelmat, toiseen käyttöliittymä ja kolmanteen vaikkapa tuloslistan käsittely. Aliohjelmien kutsuminen onnistuu ilman ohjelman erillistä kääntämistä suoraan editorista, joten ohjelman kehitys on helppoa.
QBasicilla EXE-tiedosto luodaan itse asiassa kahden ohjelman yhteistyönä. Ensin ohjelma käännetään BC.EXE:llä OBJ-tiedostoksi, jonka jälkeen se linkitetään LINK-ohjelmalla EXE:ksi. Kirjastotiedostot lisätään vasta linkitysvaiheessa, ja 64 kt:n kokorajoitus on ainoastaan BC.EXE:llä, joten kun ohjelman osat käännetään erikseen, rajoja ei oikeastaan ole.
ohhoh!aika masee
Mitä varten Qb:ssä on tuo rajoitus jos sen voi kerran noin helposti ohittaa. Voiko siitä olla jotain haittaa koneelle jos suorittaa liian ison QB:llä thedyn ohjelman?
Ok, kiitos vaan. Tämän takia siis en nuku koko viikonloppuna kun tuli tarve tehdä eräs ohjelma nyt sitten tuolla QBasicilla :D
Mä en saanut toimimaan :(.
Ensin, kun tekee ohjelman, johon tekee sen ukkonooa subin, niin pitääkö siinä pääohjelmassa olla mitään tekstiä?
Ja kun avasin sen kirjaston ohjelmaan, niin en mä siellä mitään kirjasstoa nähnyt...
Hmm.. Mites onko yhdelläkirjastotiedostolla siis rajoittamaton koko? Siis jos teen ison ohjelman (yli 64kt) kokonaan yhteen kirjastoon, ja sitten teen pikkuohjelman, joka kutsuu ohjelman kirjastosta, niin onnistuuko sellainen?
Entä pitääkö kirjasto-tiedostot sisällyttää ohjelman mukaan kun se on käännetty exeksi ja se on menossa levitykseen?
tottakai
Huomio! Kommentoi tässä ainoastaan tämän oppaan hyviä ja huonoja puolia. Älä kirjoita muita kysymyksiä tähän. Jos koodisi ei toimi tai tarvitset muuten vain apua ohjelmoinnissa, lähetä viesti keskusteluun.