GET (50, 10)-(320, 100), logo
toi toiminto valittaa logo:sta että "Array not defined". mitä tämä meinaa? miten tämän saa korjattua?
vastatkaa viimeistään ennen joulukuun ekaa päivää, muuten on jo liian myöhäistä
sinun pitää luoda logo dimillä...
DIM logo
mitä siihen riviin ton jälkeen tulee?
Siis, GET -käskyllähän käsittääkseni otetaan kuva talteen jostain talukosta, joka sisältää kuvan. Ohjelman alkuun siis tulisi esim.:
DIM logo (1 TO 100) AS STRING 'ja jossain kohtaa ohjelmaa sitten pistät sen: GET (50, 10)-(320, 100), logo
Tuosta STRING -muuttujatyypistä en ole varma, mutta tuohon tyyliin... ;)
Alussa pitää siis varata riittävän suuri integer-taulukko kopioitavalle kuvalle. Seuraavalla kaavalla näyttäisi syntyvän aika sopivan kokoinen taulukko:
DIM kuva((x2 - x1) * (y2 - y1) / 1.9) AS INTEGER
Ja x1, x2, y1 ja y2 ovat kopioitavan alueen ääripisteet seuraavan kuvan mukaisesti:
x1 x2 -------- y1 | | | | -------- y2
Ai joo, integerejä tietenkin! Mitäköhän mä nyt oikein stringeistä sekoilin.. no, oon väsynyt. :D
Siis jos oikein tajusin ton Antin kuvion niin x2 ja y2 on vaaka- ja x1 ja x2 on pystysuuntia?
kiitoksia vaan antti, olen joskus tainnut nähdäkin tuollaisen mallin, jolla sen voi laskea, mutten ikinä muistanut, vaan homma on tullut kokeilemalla...
Nyt se valittaa että "Illegal funktion call". mitäs toi sitten meinaa? miten ton saa korjattua?
edellee, vastaus viimeistään 1.12.2002.
Hmm...olethan laittanut SCREEN 13 (tai joku muu näyttötila) ohjelman alkuun? Ilman sitä se ei toimi...
olen, yritän nimittäin laittaa näytölle piirrettyjä viivoja muistiin
Sitten taidat yrittää ladata taulukkoon kuvaa, joka on kokonaan tai osoittain näytön ulkopuolella. Toinen mahdollisuus on, että kuva, jota yrität ladata, on liian suuri. Tuossa on esimerkkinä toimiva koodi kuvan lataamisesta:
'näyttötila 13 SCREEN 13 'kuvan ala x1 = 0: x2 = 50: y1 = 0: y2 = 50 'varataan taulukko DIM kuva((x2 - x1) * (y2 - y1) / 1.9) AS INTEGER 'piirretään kuva LINE (0, 0)-(50, 50) CIRCLE (25, 25), 25 'ladataan kuva taulukkoon GET (x1, y1)-(x2, y2), kuva
tein tuon samalla tavalla mun ohjelmaani, mutta se valittaa "illegal function call" edelleen. eikä kuva ole ollenkaan kuvaruudun ulkopuolella
lainaus:
tein tuon samalla tavalla mun ohjelmaani, mutta se valittaa "illegal function call" edelleen. eikä kuva ole ollenkaan kuvaruudun ulkopuolella
Niin millä rivillä se "Illegal function call" oikein tulee? Testasin Antin esimerkkiä ja toimii ainakin QB4.5:ssa ja QB7.1:ssä ihan hyvin.
Ehkäpä voisit postata ohjelmasi olennaisimman osan tänne, sen osan joka bugaa..?
Jotenkin alkaa tuntua noista keskusteluista, että virhe johtuu väärin asennetuista kirjastoista.. puuttukohan kenties jotain??-)
QB:ssä ei kirjastoilla pahemmin peleillä tarvitse.. joten tuskin ongelmakaan tässä tapauksessa siitä johtuu. Olisi kyllä tosiaan mukava tietää mitä kaikkea se QB tuonne taulukkoon tallentaa..
Veikkaisin kuitenkin että tuo saastan virhe tulee tuolla GET-rivillä, ja se johtuu siitä että taulukko on syystä tai toisesta liian pieni.
Huuhhuh.. katselinkin tuossa juuri QB:n manuaalia.. ja ihme ja kumma! GET-käskyn kohdalla todellakin selitetään, miten tuo taulukon koko tulee laskea :) Kaava on seuraavanlainen:
4 + INT(((x2 - x1 + 1) * (bits-per-pixel-per-plane) + 7)/8) * planes * ((y2 - y1) + 1)
Eli jos SCREEN 13 on kyseessä, on meillä 8 bittiä per pikseli, sekä 1 plane. Kaava on siis
4 + INT(((x2 - x1 + 1) * 8 + 7)/8) * ((y2 - y1) + 1)
Tuokin 1.9 -taktiikka tulee melko lähelle mutta ainahan muutaman tavun säästöstä hyötyä on kun kyse on QB-soodauksesta :)
se virhe tulee GET-rivillä. ja taulukoksi olen laittanut oikean koon, sen minkä haluan.
kyllä se antin esimerkki toimi mulla oikein, ja kopsasin se mun ohjelmaani, muutin taulukon kulmien koordinaatit oikeiksi ja sitten kokeilin, mutta PÄKS! "Illegal function call"!
Gevilin pyynnöstä:
SCREEN 13 x1 = 50: x2 = 10: y1 = 320: y2 = 100 DIM kuva((x2 - x1) * (y2 - y1) / 1.9) AS INTEGER GET (x1, y1)-(x2, y2), kuva
Siis toi GET (x1, y1)-(x2, y2), kuva -rivi bugaa. Onko noi kulmat kenties väärin (vaikka ulos ruudusta) vai oikein?
y1:sen arvo on ainakin liian suuri. Eli mode13h ruutu on 320pix leveä (x) ja 200pix korkea (y). Sulla näyttäis noi koordinaatit olevan mitä sattuu. Ja muista sitten myös että QB:n taulukot ei taivu liian isoihin taulukoihin :)
oho, mulla on menny äxät ja yyt sekasin. noloo...
Nyt toimii, seuraavaa komentoa lukuun ottamatta:
PUT (100, 100), kuva
Virhe on ohjelman mukaan taas "Illegal function call".
Aihe on jo aika vanha, joten et voi enää vastata siihen.