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