Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB, VBA: Aihe, jolle on vaikea kehitellä kuvaavaa nimeä...

Sivun loppuun

Latska [03.08.2004 17:31:04]

#

Hieman pöljä nimi aiheella, muttakun en keksinyt mitään kuvaavampaa. Olen aikalailla jumittunut erääseen ongelmaan, joka koskee QB:tä. Mietiskelin, miten saisin reunat ruudulle. Esimerkiksi, että ruutu näyttää tältä:

**************************
*                        *
*                        *
*                        *
*                        *
**************************

Olisiko mitään järkevää neuvoa?

Jay [03.08.2004 18:19:20]

#

Kokeile vaikka LOCATE ja FOR-NEXT -käskyillä...

hunajavohveli [03.08.2004 20:26:42]

#

No etkö ihan PRINTillä voi tulostaa nuo merkit? LOCATE:lla voit tosiaan määrittää rivin ja sarakkeen, johon PRINT tulostaa tekstiä.

LOCATE rivi, sarake
PRINT "tekstiä"

Latska [03.08.2004 21:04:27]

#

Ajattelin, että tuolla hunajavohvelin tavalla se saattais hieman hidastaa tuota minun ohjelmaa. Kyllähän mä ton LOCATEn tiesin. Se oli yksi ensimmäisiä komentoja CLS:än ja PRINTin jälkeen.

Heikki [03.08.2004 21:15:30]

#

No voithan käyttää Line:ä tai muuta sellaista komentoa?

hunajavohveli [03.08.2004 21:21:02]

#

Ei auta Line merkkigrafiikkaan.
Latska: Onko tarkoituksena sitten piirtää jatkuvasti tuota reunaa? Yksi piirtokerta tapahtuu nimittäin niin nopeasti, ettei ihmissilmä huomaa.

Latska [03.08.2004 21:36:47]

#

Kokeilin tota juttua DO -lauseilla, se osoittautui toimivaksi, kunnes huomasin, että se jättää aikaisemmat piirroskerrat huomiotta. Tältä sen pitäisi näyttää:

************************
                       *
                       *
                       *

Mutta se näyttääkin tältä:

                       *
                       *
                       *
                       *

Ja sen reunuksen pitäisi jäädä voimaan muun ohjelman ajaksi.

Edit: Pöh! Pitää huomenna puoli neljän aikaan iltapäivällä lähteä tädin mökille kahdeksi yöksi... Siitä tulee varmaan rattoisaa... Mustavalkotelkkari, ei tietokonetta jne...

Blaze [03.08.2004 21:43:07]

#

Latska kirjoitti:

Hieman pöljä nimi aiheella, muttakun en keksinyt mitään kuvaavampaa.

No on joo, olisko vaikka "QBasic: ohjelmalle reunat tekstitilassa" ollut parempi?

Latska [03.08.2004 21:46:46]

#

Blaze kirjoitti:

Latska kirjoitti:

Hieman pöljä nimi aiheella, muttakun en keksinyt mitään kuvaavampaa.

No on joo, olisko vaikka "QBasic: ohjelmalle reunat tekstitilassa" ollut parempi?

Tuo kuulostaa kyllä fiksummalta.:)

hunajavohveli [03.08.2004 22:00:00]

#

Latska kirjoitti:

Mutta se näyttääkin tältä:

Ongelma on siinä, että kun PRINT pääsee yli rivin 23, se rupeaa skrollaamaan tekstiä ylöspäin. Itseäni tuon PRINTin kummalisuudet ottivat päähän kerran, ja tekaisin ihan oman tekstiä tulostavan komennon, ettei tuollaista tapahtuisi. No, joka tapauksessa asia korjaantuu sillä että pistät perään ; merkin. Eli siis

PRINT "*";

Turambar [03.08.2004 22:27:39]

#

Nopein ja siistein taitaapi mennä näin:

locate rivi, 1
print string$("*", 20) '20 on printattavien merkkien määrä
print "*" + space$(18) + "*"
'jne...

En ole ihan varma syntaksista, vedin päästä. Jos ei toimi, niin kattele qb:n manuaalista.

hunajavohveli [03.08.2004 22:32:00]

#

Turambar: Merkkien määrä tulee parametrinä ennen merkkiä. Muuten näyttäisi olevan oikein.

nomic [04.08.2004 00:53:45]

#

en muista qb:ta pahemmin mutta eikö tämmöinen käy?

print "*"; string$(32, "*"); "*"
 print "*"; space$(32); "*"
 print "*"; space$(32); "*"
print "*"; string$(32, "*"); "*"

rumaa koodia mutta jotenkin näin homma saatiin toimimaan
tietysti vasemman/oikean -seinän ptint komennot kannattaa laittaa ehkä for-silmukkaan tj...

Grey [04.08.2004 13:38:23]

#

DECLARE SUB PRINTX (X!, Y!, VARI!, Merkki$)
CLS
FOR Y = 1 TO 25
 PRINTX 1, Y, 6, CHR$(219)
  PRINTX 80, Y, 6, CHR$(219)
NEXT
FOR X = 1 TO 80
 PRINTX X, 1, 6, CHR$(219)
  PRINTX X, 25, 6, CHR$(219)
NEXT
SLEEP

SUB PRINTX (X, Y, VARI, Merkki$)
Location = (X - 1) * 2 + (Y - 1) * 160
 DEF SEG = &HB800
  POKE Location, ASC(Merkki$)
  POKE Location + 1, VARI
 DEF SEG
END SUB

Siinä on yksi tapa piirtää kehykset näytölle. Pohjana edesmenneen (?) BootSector4:n tekemä koodi.

-Grey-

hunajavohveli [04.08.2004 13:52:29]

#

Tekstimuistiin suoraan kirjoittaminen on tietysti myös hyvä tapa. Juuri sillä tavalla tein sen omankin PRINT-funktioni. QB:n valmiissa PRINTissä on lisäksi paljon turhaa mukana, kun otetaan huomioon, että tarkoituksena on vain tulostaa muutama merkki, joista ei ole edes tarkoitus tulla mitään tekstiä. Esim. PRINTin automaattiset rivinvaihdot olisivat tässä tapauksessa aivan turhia.


Sivun alkuun

Vastaus

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

Tietoa sivustosta