Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Tekstin tasaaminen

Antti Laaksonen [22.02.2002 14:10:36]

#

Jos QBasicilla kirjoittaa ruudulle PRINT-komennolla, ja teksti ei mahdu yhdelle riville, se saattaa katketa sanan keskeltä. Aliohjelma TasaaTeksti ottaa huomioon sanavälit tekstin tulostuksessa ja näin tuo paremman luettavuuden. Teksti on mahdollista sovittaa myöskin pienemmälle alueelle kuin koko näytölle x%, y% ja leveys% -parametrien avulla.

pääohjelma

'reunuksien piirto
LOCATE 5, 5: PRINT "É";
FOR i = 1 TO 38
  PRINT "Í";
NEXT
PRINT "»"
FOR i = 6 TO 14
  LOCATE i, 5: PRINT "º";
  PRINT SPACE$(38);
  PRINT "º"
NEXT
LOCATE 15, 5: PRINT "È";
FOR i = 1 TO 38
  PRINT "Í";
NEXT
PRINT "¼"


teksti$ = "Tämä esimerkki näyttää, kuinka tapahtuu tekstin tasaaminen QBasicin avulla. "
teksti$ = teksti$ + "Tämä ja kymmeniä muita QBasic-vinkkejä löytyy Ohjelmointiputkasta: https://www.ohjelmointiputka.net"
TasaaTeksti teksti$, 6, 6, 37

aliohjelma TasaaTeksti

SUB TasaaTeksti (teksti$, x%, y%, leveys%)

ut$ = teksti$
DIM rivit(1 TO 100) AS STRING
rivi = 1

DO WHILE INSTR(ut$, " ") <> 0
  lt$ = LEFT$(ut$, INSTR(ut$, " ") - 1)
  IF LEN(rivit(rivi)) + 1 + LEN(lt$) > leveys% THEN
    rivi = rivi + 1
  END IF
  rivit(rivi) = rivit(rivi) + " " + lt$
  ut$ = MID$(ut$, INSTR(ut$, " ") + 1)
LOOP
lt$ = ut$
IF LEN(rivit(rivi)) + 1 + LEN(lt$) > leveys% THEN
  rivi = rivi + 1
END IF
rivit(rivi) = rivit(rivi) + " " + lt$
rivimaara = rivi

FOR i = 1 TO rivimaara
  LOCATE y% + i - 1, x%: PRINT rivit(i)
NEXT
END SUB

Atte Avuton [24.02.2002 12:33:55]

#

monimutkaisuuden riemuvoitto

Vastaus

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

Tietoa sivustosta