VB kutoseen saa jotenkin näyttämään tivinumeroinnin mutta miten?
Löytyykö asetus jostakin suoraan VB:stä vai pitääkö hankkia joku lisäkilkutin? Mistä ja mikä?
siis rivinumerointi tyyliin:
10 Private Sub koe()
20 Aja
30 End Sub
Asiaa pengottiin joskus muutama vuosi takaperin. Yritimme saada aikaiseksi VB:hen rivinumerointiin perustuvaa virheen hallintaa kehitysympäristön käyttöön.
Muistaakseni se ei ole mahdollista ainakaan VB6:ssa.
Kyllä VB6:tosessa toimii GOTO käsky jos sitä tarkoitat!
Näin toimii:
Private Sub Koe() Goto 10 'Siirrytään kontaan 10 Msgbox "Tätä ei sanota" 10 Msgbox "Tämä sanotaan" End Sub
Näin ei toimi:
Private Sub Koe1() 10 Msgbox "Tämä sanotaan" End Sub Private Sub Koe2() Goto 10 End Sub
Niin, tietenkään gotolla ei voi hypätä proseduurista toiseen. Ihan yhtä mahdotonta kuin yrittäisi hyppätä QB:ssä aliohjelmasta toiseen. Kuitenkaan kahdessa eri aliohjelmassakaan ei saa olla molemmissa samannimisiä rivejä.
Edit: Periaattessa Gotoa ei kyllä pitäisi käyttää alkuunkaan.
hylätkää toi rivinumeroinnin käyttäminen. sehän on ollut "deprecated" jo n. 20 vuotta.
käyttäkää linelabeleita jos on pakko GOTOa käyttää.
Joo voithan tehdä labelin joka riville kirjoittamalla
10: koodia...
20: koodia...
30: koodia...
Mutta oikkasti - tuosta tavasta on luovuttu ja kyseisen ohjelmointitavan käyttö (Goto) on huonoa koodia.
Ainoa perusteltu tapa on käyttää sitä lauseessa: "On Error Goto Virheenkasittelija", jolla suoritus saadaan katkaistua virheen sattuessa ja virhetilanne korjattua tai logattua virhe.
Goto kannattaa korvata silmukoilla.
Esim.
10 a = a + 1 If a < 10 Then Goto 10
voidaan korvata:
Do a = a + 1 Loop Until a = 10
Gotoa käytettiin aikanaan Basicissa, jolloin aliohjelmat rakennettiin lineaarisesti suoritettavan ohjelmakoodin sisälle.
Tyyliin:
10 INPUT A$
20 IF A$>0 THEN
30 GOTO 70
40 ELSE
50 GOTO 90
60 END IF
70 PRINT A$
80 GOTO 10
90 END
en nyt ihan tuota goto hommaa tarkoittanut, vaan että vb:ssä näkyisi ne rivinumerot, vaikkakaan niillä ei ole toiminnallisesti mitään mkerkitystä.
Helpottaisi vain koodin kirjoittamista ja antaisi kuvaa kuinka paljon koodia löytyy.
Tuollaisen ole nähnyt ihan käytännössä olevan mahdollista, mutta en vaan tiedä miten sen saa. Ilmeisesti tarvitsee jonkun lisäpalikan.
Jälkeenpäin kirjoitettu:
Löytyihän se: http://www.mztools.com/
Tuollaisella saa ja saa paljon muutakin.
Kannattaa testata.
Rivinumeroista on muuten sekin hyöty, että käännetty ohjelma voi käyttää niitä virheen sattuessa. Muistaakseni ERL-funktio palauttaa rivin, jolla mahdollinen virhe sattui. Näin ohjelman käyttäjä voi lähettää virheilmoituksen tekijälle, ja tekijä näkee, missä virhe on sattunut. Myös ERR-funktio, joka palauttaa sattuneen virheen virhekoodin, on hyödyllinen.
Miks kaikki sanoo ettei gotoo kannata käyttää?
Gotoa ei kannata käyttää siksi että koodista tulee sekava ja huonostiluettava. Kun saman asian voi toteuttaa funktioillakin.
Njaa mun mielestä ne gotot ei yhtään pahenna koodia...
Njaa mun mielestä ihan sikana, ja ne on hyödyttömiä qb-härpäkkeitä jotka voi korvata millä vaan (yleensä mulla while)
Tosiaankin, koodista saattaa tulla helvetin vaikeasti luettavaa kun pitää poukkoilla paikasta toiseen.
Joskus aikoinaan kun QB:llä leikin niin käytin gotoja, koska en osannut tehdä asioita toisin.
PHP:tä koodatessa en ole edes muistanut moista keksintöä :)
Eli ilman gotojakin pärjää, mutta joissain harvoissa tapauksissa muutama goto ei olisi pahitteeksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.