Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Kirjastojen teko ei toimi

Sivun loppuun

hunajavohveli [05.12.2003 15:41:48]

#

Tai no toimii siihen asti, kunnes QBasic pitää käynnistää. Kirjoitan ihan normaalisti komentoriville niinkuin pitää ensin hakemiston jossa QBasic minulla on ja siihen perään \qbasic71\QBX.EXE \L UKKONOOA.QLB
Mutta kun 7.1:n alkuikkuna on tullut, siis se että tämä ohjelma on suunniteltu vain DOS-käyttöön ... niin sen jälkeen ohjelma vain sammuu. Kyllähän se ensin jotain tietysti ilmoittaa, mutta siitähän ei kukaan XP:n käyttäjä tule selvää saamaan...

rndprogy [05.12.2003 16:07:12]

#

Ai ei saa selvää? Jos dos ikkuna sammuu heti lopetettua ota sen dos ikkunan Ominaisuudet->ohjelma ja katso että sulje lopetettaessa valinruutu ei ole valittu

hunajavohveli [05.12.2003 17:21:00]

#

OK

hunajavohveli [05.12.2003 17:22:23]

#

No nyt se näyttää jotain valid options ja sitten jotain siansaksaa mistä en ymmärrä mitään.

Antti Laaksonen [05.12.2003 17:26:58]

#

Oppaassa on virhe (joka täytyy heti korjata). Parametria ei näet pidä ilmoittaa kenoviivalla, kuten oppaassa väitetään, vaan kauttaviivalla. Eli oikea muoto on:

QBX.EXE /L UKKONOOA.QLB

Tai lyhennettynä:

QBX.EXE /LUKKONOOA

hunajavohveli [05.12.2003 17:49:59]

#

Nonih, nyt toimii!

hunajavohveli [05.12.2003 20:26:23]

#

Eikus hetkinen taas on ongelmaa. Toi ukkonooa-kirjasto toimii mutta tein juuri äsken uuden GRAFIX05.QLB kirjaston ja sinne SUBIN Smooth, joka on pehmennysohjelma.

Pistän alkuun:

DECLARED SUB Smooth ALIAS "Grafix05" ()

Ja komentorivikin on kunnossa mutta se sanoo silti että SUB PROGRAM Smoothia ei löydy.

Antti Laaksonen [05.12.2003 22:45:36]

#

ALIAS on siis aliohjelman nimi kirjastossa (alkuperäisessä koodissa). Eli jos aliohjelman nimi GRAFIX05.QLB:ssä on myös Smooth, täytyy määrittelyn olla yksinkertaisesti:

DECLARE SUB Smooth ALIAS "Smooth" ()

Voipa ALIAS-kohdan jättää poiskin, jos aliohjelman nimi on sama sekä ohjelmassa että kirjastossa.

hunajavohveli [06.12.2003 12:27:56]

#

Ai joo käsitin aluksi että tuohon ALIAS juttuun tulee kirjaston nimi.

hunajavohveli [06.12.2003 12:37:25]

#

No voih, nyt se sanoo että Overflow in Quick Library DATABASE. Database on sen alkuperäisen bas-tiedoston nimi, johon Smooth SUB:in tein.

hunajavohveli [06.12.2003 15:18:07]

#

Eiku jaa eipäs mitäään. Se ongelma on kunnossa, mutta onko keinoa keskeyttää ohjelman kesken kirjastosuorituksen?

sqwiik [06.12.2003 18:35:30]

#

Siis silloin kun suoritetaan jotain kirjastossa olevaa koodia, vai? Ainakaan minulle ei tule mitään kovin äkkiä mieleen, mutta voisit tehdä suoraan kirjastoon ne keskeytykset esim. virhevaarojen takia. (eli ennen kuin käännät kirjastoksi, laita sinne koodi joka keskeyttää suorituksen virheen ilmaantuessa)

hunajavohveli [06.12.2003 19:26:53]

#

Mutta voihan olla että se jää jumiin (vaikka loputtomaan luuppiin) vaikkei virhettä tapahtuisikaan. Ja kun Control/Break ei toimi kirjastotietoja suoritettaessa. Ilmeni muuten uusikin ongelma:
Enää ei pysty käyttämään COMMON SHARED:ia muuta kuin niihin muuttujiin, jotka löytyvät ohjelmaan ladatuista kirjastoista.

sqwiik [06.12.2003 19:47:34]

#

Loputtomat loopit ovat virheitä. Niitä ei saisi muodostua koskaan... ikuisen silmukan syyt pitää kyetä tunnistamaan ja ehkäisemään.

Miten ei pysty? Antaako virhettä tms?

hunajavohveli [06.12.2003 21:31:41]

#

Niin siis virheitähän ne tietysti ovat, mutta luulin että tarkoitit sellaista virhettä mistä QBasic antaa virheilmoituksen, että sieltä pääsisi pois ON ERROR GOTO:lla. Mutta tärkeintä olisi jos joka tapauksessa ohjelman voisi pysäyttää kesken kirjastosuorituksen. Mitenkäs tuo toinen ongelma?

sqwiik [06.12.2003 21:56:42]

#

... eli miten COMMON SHARED:ia ei pysty enää käyttämään?

sooda [08.12.2003 14:40:17]

#

niin ja sitte muistutukseksi että jos on paljon subeja eikä halua kirjoittaa niin paljoa niin nää kaksi asiaa on ihan sama:

DECLARE SUB Smooth ALIAS "Smooth" ()
DECLARE SUB Smooth ()

hunajavohveli [11.12.2003 17:16:14]

#

Niin siis COMMON SHARED:han jakaa muuttujat kaikkien aliohjelmien kesken, niin että niiden arvot säilyvät siirryttäessä aliohjelmaan. Mutta nyt kun yrittää käyttää COMMON SHARED:ia muuttujien jakamiseen niin se ei toimi, elleivät jaettavat muuttujat löydy myös ohjelman käyttämästä kirjastosta.

hunajavohveli [11.12.2003 18:15:47]

#

Siis ladatussa kirjastossa on teho-muuttuja ja teho-muuttujan arvo määritellään pääohjelmassa, joten siihen täytyy käyttää COMMON SHARED:ia että se säilyisi kirjastossakin. Mutta sitten kun laittaa toisen muuttujan joka on hp COMMON SHARED:illa ohjelman sisäisten aliohjelmien kanssa jaettavaksi, niin tulee ilmoitus:
COMMON IN QUICK LIBRARY TOO SMALL

hunajavohveli [14.12.2003 16:33:07]

#

Ja se sanoo jotain, että COMMON SHARED:ssa on enemmän muuttujia mitä kirjastossa, mutta miksei niitä saisi olla?


Sivun alkuun

Vastaus

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

Tietoa sivustosta