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 SUBmonimutkaisuuden riemuvoitto
Aihe on jo aika vanha, joten et voi enää vastata siihen.