Minulla on kaksi parametritöntä aliohjelmaa, joiden nimet ovat HR ja HT. Haluan suorittaa molemmat peräkkäin, ja lisäksi haluan ne samalle riville, joten erottelen ne kaksoispisteillä:
HR: HT: PRINT "Terve" HR: HT: PRINT "Testaus"
Mutta tässä tulee sellainen ongelma, että kääntäjä luulee kahta HR-kutsua riveiksi ja alkaa herjata "Duplicate label", vaikkei se tajua, että yritän vain kutsua määrittelemääni aliohjelmaa. Minkä ihmeen takia se ei valita siitä, että yleensä on samanniminen rivi ja aliohjelma? Onko mitään keinoa saada nuo samalle riville, vai olenko juuri löytänyt QBasicista heikkouden, joka lähes tuomitsee yhden projektini? Homma on nimittäin niin, että joko ne ovat samalla rivillä, tai sitten en tee niitä ollenkaan.
Entä jatkatko projectiasi jos pitää SUBien nimien perään kirjoittaa CALL.
Näin se ei luule niitä rivilaabeleiksi:
:HR: HT: PRINT "Terve" :HR: HT: PRINT "Testaus"
lainaus:
entä jatkatko projectiasi jos pitää SUBien nimien perään kirjoittaa CALL.
En. Ideana oli nimenomaan se, että CALL:ia ei tarvitsisi kirjoittaa, vaan pelkkä aliohjelman nimi, niin kuin se yleensä on riittänytkin. Tai oikeastaan koko projekti ei kaadu, mutta joudun tekemään tämän kohdan paljon vaikeammalla tavalla.
Edit: Tuota soodan keinoa voisin harkita, vaikka sekin osittain tuottaa ongelmia.
Hankala juttu tosiaan. En usko, että soodan kertomaa parempaa ratkaisua on olemassa, siinä sentään täytyy lisätä vain yksi merkki rivin alkuun. Minkälaista ohjelmaa olet muuten tekemässä?
Käyttäkää pitempiä, ja kuvaavampia aliohjelma nimiä. Ohjelma samalla kommentoi itseään, ja on helpompi itselle.
Suoritettava ohjelma ei hidastu siitä, miten pitkä muuttujan tai funktion nimi on. :)
(olen joskus huomannut ton tarpeellisuuden, kun avasin pari vuotta vanhaa projektia.. )
HerneR HerneT PRINT "Terve" HerneR HerneT PRINT "Testaus"
Antti Laaksonen kirjoitti:
Minkälaista ohjelmaa olet muuten tekemässä?
Oikeastaan vain yhtä HoneyLibin kohtaa, mutta keksinkin juuri paljon paremman keinon, joten en tarvitsekaan tuota toista keinoa. HR:ää ja HT:tä oli tarkoitus käyttää rivinvaihtoon yms., joten niistä olisi siksi ollut kätevä tehdä noin lyhyitä ja helppokäyttöisiä, mutta korvaan ne samalla tyylillä kuin C++:n cout-käskyssä.
Joo, jos käytät PRINT-komentoa, niin rivinvaihdot kannattaa toki tehdä tähän tapaan:
PRINT "Rivi 1"; rv; "Rivi 2"; rv; "Rivi 3"
Rivinvaihdon voi määritellä joko muuttujana tai funktiona:
DIM rv AS STRING rv = CHR$(13) FUNCTION rv$ rv$ = CHR$(13) END FUNCTION
Aihe on jo aika vanha, joten et voi enää vastata siihen.