Kirjoittaja: Antti Laaksonen
Kirjoitettu: 16.10.2002 – 16.10.2002
Tagit: koodi näytille, vinkki
Tämä ohjelma näyttää tekstitiedoston todella nopeasti ja ilman välkkymistä, käyttäen BSAVE- ja BLOAD-komentoja tekstirivien skrollaukseen. Ainakin itselläni ohjelma oli vähän liiankin nopea, mutta hidastus ei yleensä ongelma ole, sopivaan väliin vain WAIT &H3DA, 8.
Kaikki tiedoston teksti ladataan taulukkoon, joten sitä voi olla korkeintaan 500 rivin verran. Tämän rajan voisi melko helposti kiertää monellakin keinolla, ja siinä suhteessa ohjelmassa on parantamisen varaa - halusin kuitenkin pitää koodin mahdollisimman yksinkertaisena.
' Tekstitiedoston näyttäminen n o p e a s t i ' ------------------------------------------------- ' ' käyttäen BSAVE- ja BLOAD-komentoja tekstirivien ' nopeaan skrollaukseen ' ' Copyright Antti Laaksonen 2002 'muuttujien määrittelyt DIM tiedosto AS STRING DIM SHARED rivit(500) AS STRING DIM SHARED rivi AS INTEGER DIM rivimaara AS INTEGER 'näytettävä tiedosto tiedosto = "c:\autoexec.bat" 'ylä- ja alapalkin piirtäminen CLS LOCATE 1 COLOR 15, 1: PRINT LEFT$(tiedosto$ + SPACE$(80), 80) LOCATE 23 COLOR 15, 1: PRINT LEFT$(CHR$(25) + " alas, " + CHR$(24) + " ylös, Esc pois" + SPACE$(80), 80) 'tiedoston rivien lukeminen taulukkoon OPEN tiedosto FOR INPUT AS #1 DO UNTIL EOF(1) OR rivimaara = 500 rivimaara = rivimaara + 1 LINE INPUT #1, rivit(rivimaara) rivit(rivimaara) = LEFT$(rivit(rivimaara) + SPACE$(80), 80) LOOP CLOSE #1 'ensimmäisten rivien tulostaminen LOCATE 2 COLOR 7, 0 FOR i = 1 TO 20 LOCATE i + 1: PRINT rivit(i) NEXT 'tekstinäytön segmentti DEF SEG = &HB800 'aloitetaan riviltä 1 rivi = 1 DO 'tyhjennetään välillä näppäimistöpuskuri l% = l% + 1 IF l% = 100 THEN x$ = INKEY$: l% = 0 'luetaan painettu näppäin n% = INP(&H60) SELECT CASE n% 'jos näppäin on 1, Esc, poistutaan ohjelmasta CASE 1 KILL "c:\qbt.dat" END 'jos näppäin on 80, alas, skrollataan tekstiä alas 'rivin verran jos ei olla tiedoston lopussa CASE 80 IF rivi < rivimaara - 19 THEN rivi = rivi + 1 SkrollaaAlas END IF 'jos näppäin on 72, ylös, skrollataan tekstiä ylös 'rivin verran jos ei olla tiedoston alussa CASE 72 IF rivi > 1 THEN rivi = rivi - 1 SkrollaaYlos END IF END SELECT LOOP SUB SkrollaaAlas 'siirtää tekstirivejä ylöspäin rivin verran BSAVE "c:\qbt.dat", 320, 160 * 20 BLOAD "c:\qbt.dat", 160 'tulostaa uuden alimman rivin LOCATE 21: PRINT rivit(rivi + 19) END SUB SUB SkrollaaYlos 'siirtää tekstirivejä alaspäin rivin verran BSAVE "c:\qbt.dat", 160, 160 * 19 BLOAD "c:\qbt.dat", 320 'tulostaa uuden alimman rivin LOCATE 2: PRINT rivit(rivi) END SUB
Tosi yksinkertainen ja selkeä koodi. Vieläpä helposti muokattavissa..
Wau! Tämän avulla sain uuden ohjelmani toimimaan!