Kirjautuminen

Haku

Tehtävät

Koodit: QB: Tekstitiedoston näyttäminen nopeasti

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

Kommentit

DooDiE [12.08.2003 22:31:20]

#

Tosi yksinkertainen ja selkeä koodi. Vieläpä helposti muokattavissa..

gamehouse [21.05.2007 15:49:32]

#

Wau! Tämän avulla sain uuden ohjelmani toimimaan!

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta