Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: GET-toiminto valittaa

Sivun loppuun

Gwaur [23.11.2002 20:11:54]

#

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ä

Vilikki [23.11.2002 21:59:22]

#

sinun pitää luoda logo dimillä...

Gwaur [24.11.2002 00:06:31]

#

DIM logo

mitä siihen riviin ton jälkeen tulee?

tuobbi-89 [24.11.2002 00:33:42]

#

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... ;)

Antti Laaksonen [24.11.2002 00:38:04]

#

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

tuobbi-89 [24.11.2002 00:43:00]

#

Ai joo, integerejä tietenkin! Mitäköhän mä nyt oikein stringeistä sekoilin.. no, oon väsynyt. :D

Gwaur [24.11.2002 09:53:05]

#

Siis jos oikein tajusin ton Antin kuvion niin x2 ja y2 on vaaka- ja x1 ja x2 on pystysuuntia?

Vilikki [24.11.2002 10:09:27]

#

kiitoksia vaan antti, olen joskus tainnut nähdäkin tuollaisen mallin, jolla sen voi laskea, mutten ikinä muistanut, vaan homma on tullut kokeilemalla...

Gwaur [24.11.2002 10:53:58]

#

Nyt se valittaa että "Illegal funktion call". mitäs toi sitten meinaa? miten ton saa korjattua?
edellee, vastaus viimeistään 1.12.2002.

Antti Laaksonen [24.11.2002 11:42:17]

#

Hmm...olethan laittanut SCREEN 13 (tai joku muu näyttötila) ohjelman alkuun? Ilman sitä se ei toimi...

Gwaur [24.11.2002 11:46:52]

#

olen, yritän nimittäin laittaa näytölle piirrettyjä viivoja muistiin

Antti Laaksonen [24.11.2002 12:00:17]

#

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

Gwaur [24.11.2002 15:08:29]

#

tein tuon samalla tavalla mun ohjelmaani, mutta se valittaa "illegal function call" edelleen. eikä kuva ole ollenkaan kuvaruudun ulkopuolella

trinit [24.11.2002 16:40:06]

#

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.

Gevil [24.11.2002 16:42:22]

#

Ehkäpä voisit postata ohjelmasi olennaisimman osan tänne, sen osan joka bugaa..?

progo [24.11.2002 18:03:17]

#

Jotenkin alkaa tuntua noista keskusteluista, että virhe johtuu väärin asennetuista kirjastoista.. puuttukohan kenties jotain??-)

thefox [24.11.2002 19:27:01]

#

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.

thefox [24.11.2002 19:33:55]

#

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 :)

Gwaur [24.11.2002 19:40:37]

#

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?

thefox [24.11.2002 19:56:53]

#

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 :)

Gwaur [24.11.2002 20:08:04]

#

oho, mulla on menny äxät ja yyt sekasin. noloo...

Gwaur [24.11.2002 20:10:32]

#

Nyt toimii, seuraavaa komentoa lukuun ottamatta:

PUT (100, 100), kuva

Virhe on ohjelman mukaan taas "Illegal function call".


Sivun alkuun

Vastaus

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

Tietoa sivustosta