Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: Getin optimoiminen (Qb)

Grey [21.06.2005 13:21:01]

#

Jostain luin että moista voi optimoida niin että se vie vähemmän muistia, vaan vaikka löysinkin kaavan, en millään saanut siitä aikaan mitään toimivaa. Ohjeista ei ollut mitään apua, kun ne eivät selittäneet tarpeeksi kaavasta..

-Grey-

Antti Laaksonen [22.06.2005 16:10:54]

#

Kaavassa olevat arvot bits-per-pixel-per-plane ja planes saat selville ohjeessa olevasta taulukosta. Kuvan mittojen mukaan määräytyvät x1, y1, x2 ja y2. Tuo kaava siis kertoo, kuinka monta tavua tietynkokoinen kuva vie tilaa kussakin näyttötilassa. Jos taulukko varataan INTEGER-tyyppiseksi, alkioiden määrä on puolet tästä pyöristettynä ylöspäin.

Esim. Näyttötila on 13 ja kopioitava alue alkaa kohdasta (50, 60) ja päättyy kohtaan (70, 80). Taulukosta nähdään, että bits-per-pixel-per-plane on 8 ja planes on 1. Koordinaatit tiedetään: x1 on 50, y1 on 60, x2 on 70 ja y2 on 80. Kaavan perusteella saadaan:

  4+INT(((x2-x1+1)*(bits-per-pixel-per-plane)+7)/8)*planes*((y2-y1)+1)
= 4+INT(((70-50+1)*(8)+7)/8)*1*((80-60)+1)
= 4+INT((21*8+7)/8)*21 = 4+21*21 = 445

Nyt siis tarvitaan INTEGER-taulukko, jonka alkioiden määrä on 445 / 2 eli 223.

SCREEN 13
DIM kuva(223) AS INTEGER
GET (50, 60)-(70, 80), kuva

Näköjään taulukon kooksi kävisi myös 222 tavua, 221 aiheuttaa kuitenkin ilmoituksen "Illegal function call". Kaava ei siis välttämättä anna pienintä mahdollista arvoa.

Vastaus

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

Tietoa sivustosta