Visual Basic

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 22. maaliskuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 14 muokkausta .
Visual Basic
Kieliluokka Proseduurillinen , oliosuuntautunut , komponenttisuuntautunut , tapahtumasuuntautunut
Toteutustyyppi Käännetty , tulkittu
Esiintyi 1991
Kehittäjä Microsoft
Tiedostotunniste _ .bas, .cls, .frm, .vbp, .vbg
Vapauta Visual Basic 6.0 (1998 ) ( 1998 )
Tyyppijärjestelmä Staattinen kirjoitus , Voimakas kirjoittaminen , Dynaaminen kirjoitus
Tärkeimmät toteutukset Microsoft Visual Studio
Murteet Visual Basic sovelluksille , Visual Basic Script
Vaikutettu QuickBasic , BASIC
vaikutti Visual Basic .NET , REALbasic , Gambas , Xojo , Basic4ppc
Verkkosivusto msdn.microsoft.com/ru-RU/vstudio/ms788229.aspx
 Mediatiedostot Wikimedia Commonsissa

Microsoft Visual Basic on Microsoft Corporationin kehittämä  ohjelmointikieli ja integroitu ohjelmistokehitysympäristö . Visual Basic -kieli peri esi-isänsä, BASIC-kielen hengen, tyylin ja osittain syntaksin , jolla on monia murteita. Samaan aikaan Visual Basic yhdistää olio- ja komponenttisuuntautuneiden ohjelmointikielten proseduurit ja elementit . VB IDE sisältää työkalut visuaaliseen käyttöliittymäsuunnitteluun, koodieditorin, jossa on IntelliSense ja syntaksin korostus, sekä työkaluja sovellusten virheenkorjaukseen.

Visual Basic on myös hyvä työkalu tietokantasovellusten nopeaan kehittämiseen (RAD) Microsoft Windows -perheen käyttöjärjestelmille . Monet ympäristön mukana toimitettavat valmiit komponentit on suunniteltu auttamaan ohjelmoijaa heti aloittamaan liiketoimintasovelluksen liiketoimintalogiikan kehittämisen, ohjaamatta hänen huomioaan ohjelman käynnistyskoodin kirjoittamiseen, tapahtumien tilaamiseen ja muihin VB:n automaattisesti toteuttamiin mekanismeihin.

Vakavat kehittäjät tunnustivat Visual Basicin ensimmäisen kerran version 3 julkaisun jälkeen. Lopullinen tunnustus täysimittaiseksi ohjelmointityökaluksi Windowsille tuli version 5 julkaisun myötä. Versiosta VB6, joka on osa Microsoft Visual Studio 6.0:aa, on tullut todella kypsä ja monipuolinen tuote.

Kehityshistoria

Julkaisupäivä Versio Kuvaus
toukokuuta 1991 1.0 Visual Basic 1.0 Microsoft Windowsille . QBasic - syntaksi otettiin kielen perustaksi ja innovaatio, joka toi kielelle sitten suuren suosion, oli kielen ja graafisen käyttöliittymän välisen viestinnän periaate. Tämän periaatteen on kehittänyt Alan Cooper ( Alan Cooper ) ja se toteutettiin prototyyppissä Tripod (tunnetaan myös nimellä Ruby )
syyskuuta 1992 1.0 Visual Basic 1.0 DOS -käyttöjärjestelmässä . Se ei ollut täysin yhteensopiva VB:n Windows-version kanssa, koska se oli seuraava QuickBASIC-versio ja toimi näyttötekstitilassa. On mielenkiintoista huomata, että paketti sisälsi erityisen apuohjelman, joka muunsi tämän version projektit Visual Basic 1.0 -projekteiksi Windowsille. Hän teki koodista mahdollisimman yhteensopivan Windows-version kanssa, muunsi lomakkeet (vaikka tulos oli epätyydyttävä teksti- ja grafiikkatilan eroista johtuen) ja antoi koodiin kommentteja ja vinkkejä lisäparannuksiin.
marraskuuta 1992 2.0 Visual Basic 2.0. Kehitysympäristöstä tuli helpompi käyttää ja se toimi nopeammin. Ominaisuudet-ikkuna on siirtynyt erilliseen luetteloon. Lisätty lähdekoodin korostus .
1993 3.0 Visual Basic 3.0 julkaistiin Standard- ja Professional-versioina. Lisäksi pakettiin on lisätty moottori Access-tietokantojen kanssa työskentelemiseen .
elokuuta 1995 4.0 Visual Basic 4.0 oli versio, joka pystyi luomaan sekä 32-bittisiä että 16-bittisiä Windows-sovelluksia. Lisäksi luokkien kirjoittaminen VB:llä tuli mahdolliseksi, ja Visual Basicista tuli vihdoin täysimittainen kääntäjä , mikä nosti huomattavasti ohjelman suoritusnopeutta. Lisätty tuki OLE -ohjaimille (OCX), joka korvaa vanhat VBX-ohjaimet
Helmikuu 1997 5.0 Visual Basic 5.0 - tästä versiosta alkaen tuli mahdolliseksi kehittää perinteisten sovellusten ohella omia COM-komponentteja . Kääntämällä tällainen komponentti OCX-tiedostoksi ja toimittamalla se oli mahdollista toimittaa sen ohjausobjekti paitsi loppukäyttäjälle , myös muille kehittäjille, minkä jälkeen he saattoivat integroida tämän objektin sovelluksiinsa. Integroitu ympäristö sisältää P-Code- ja Native - kääntäjät. Sovellukset suoritetaan uudella virtuaalikoneella, joka on toteutettu dynaamisessa kirjastossa MSVBVM50.DLL. Myös tämän vuoden ensimmäisellä neljänneksellä Microsoft julkaisee tuotteen Visual Basic 5 Control Creation Edition (VB5CCE) -erikoisversiossa, joka on erikoistunut vain ActiveX -komponenttien suunnitteluun .
1998 puolivälissä 6.0 Visual Basic 6.0  - Optimoitu virtuaalikoneen toiminta ja siirretty MSVBVM60.dll-tiedostoon. Parannettu alkuperäisen kääntäjän suorituskyky. Lisätty uusia toimintoja merkkijonojen ja taulukoiden käsittelyyn. Tämä kielen versio on klassisen VB:n uusin versio. Microsoft muutti Basic-perheen kielikäytäntöä ja Visual Basicin kehittämisen sijaan luotiin kokonaan uusi kieli, Visual Basic .NET .
2002 7.0 Ensimmäinen Visual Basic .NET -julkaisu . Tärkein ominaisuus on, että koodia hallitsee täysin .NET Framework Common Language Runtime . Rikki taaksepäin yhteensopivuus klassisen Visual Basic (jäädytetty VB6) kanssa.
huhtikuuta 2003 7.1 Microsoft on päivittänyt Visual Basic .NET:in ja optimoinut kääntäjän. Julkaistu .NET Framework 1.1:n päivitetyn version kanssa.
2005 8.0 Mukana Visual Studio 2005 . Vaatii .NET Framework 2.0:n. Visual Basic .NET 2003:n julkaisun jälkeen Microsoft poisti ".NET"-etuliitteen tuotteen nimestä ja seuraavan version nimi on Visual Basic 2005.
2008 9.0 Mukana Visual Studio 2008 . Vaatii .NET Framework 3.5:n
2010 10.0 Mukana Visual Studio 2010 . Vaatii .NET Framework 4:n
2012 11.0 Mukana Visual Studio 2012 . Vaatii .NET Framework 4.5:n
2013 12.0 Mukana Visual Studio 2013 :ssa . Vaatii .NET Framework 4.5.1:n
2015 14.0 (ei julkaistu versiona 13.0) Mukana Visual Studio 2015 . .NET Framework päivitetty versioon 4.6
2017 15.0 Mukana Visual Studio 2017 .

Visual Basic -version 6.0 julkaisun jälkeen Microsoftin kehittäjät muuttivat merkittävästi tämän tekniikan kehityssuuntaa. Visual Basic .NET ei salli ohjelmointia vanhalla tavalla, koska itse asiassa se on täysin erilainen kieli, sama kuin mikä tahansa muu ohjelmointikieli .NET -alustaan ​​. Kielen yksilöllisyys ja sen edut (yksinkertaisuus, ohjelmien luomisen nopeus, valmiiden komponenttien helppokäyttöisyys) eivät ole .NET-ympäristössä käytettynä yhtä tärkeitä kuin ennen - kaikki keskittyy ominaisuuksiin itse .NET-alustan luokkakirjastoissaan. Tällä hetkellä (kesäkuussa 2015) meidän on puhuttava Visual Basicista, kuten kielen klassisista versioista 4.0 - 6.0, sen murteista: Visual Basic for Applications (VBA) ja Visual Basic Scripting Edition (VBScript) sekä kielestä .NET-alusta - Visual Basic .NET

Maaliskuussa 2020 Microsoft ilmoitti tukevansa Visual Basicia .NET 5.0 Unified Platformissa, mutta se ei enää lisää uusia ominaisuuksia tai kehitä kieltä [1] [2] .

Kielen elementit

Tietotyypit

Visual Basicin muuttujat ilmoitetaan operaattorilla Dim, jota seuraa nimi, sitten avainsana Asja sitten muuttujan tyyppi. Jos tyyppi jätetään pois, avainsanaa Asei määritetä ja muuttuja ilmoitetaan Variantiksi. Jos et määritä rakennetta Option Explicitilmoitusosiossa, muuttujien nimenomaista ilmoitusta ei vaadita ja ne luodaan automaattisesti ensimmäisen käyttökerran yhteydessä. Tämä käyttäytyminen voi johtaa ohjelman suoritusnopeuden hidastumiseen, koska ilmoittamattomat muuttujat ovat tyyppiä Variant, sekä loogisia virheitä, jotka liittyvät olemassa olevan muuttujan nimen väärään syöttöön tai ristiriitojen riskiin sovelluksessa, kun laajuus muuttuja ei ole täysin selvä.

Dim strMessage As String 'merkkityyppisen muuttujan ilmoitus Dim iProductCount As Integer 'kokonaislukutyypin muuttujan ilmoitus Dim dt70YearsOfVictory As Date 'muuttujan ilmoitus päivämäärän ja kellonajan tallentamista varten Dim otherValue ' tyyppiä ei määritetty, muuttuja tyyppiä Variantti Public Sub Main () strMessage = "Hei maailma!" iProductCount = 125 dt70YearsOfVictory = # 5 / 9 / 2015 14:00:00 PM # ' päivämäärä 9. toukokuuta 2015 14:00:00 otherValue = 12,5 ' muuttujatyyppi Variantti, alatyyppi Double. otherValue = "Wikipedia" ' muuttujatyyppi Variantti, alatyyppi String. loppu sub

Visual Basic 6.0 -perustyyppitaulukko

Nimi Tyypin koko Tietotyypin kuvaus
tavua 1 tavu Tavu. Suunniteltu tallentamaan kokonaislukuja 0–255. Jos tämän tyyppiselle muuttujalle on määritetty arvo, joka ylittää nämä rajat, Visual Basic luo ajonaikaisen virheen.
Kokonaisluku 2 tavua Koko. Suunniteltu tallentamaan kokonaislukuja välillä −32 768 - 32 767 . Tyyppimerkinnän "%" jälkiliite.
Pitkä 4 tavua pitkä kokonaisluku. Suunniteltu tallentamaan kokonaislukuja välillä −2 147 483 648 - 2 147 483 647 . Tyyppimerkinnän "&" jälkiliite.
Yksittäinen 4 tavua Yksi tarkkuus liukuluku. Negatiivisten arvojen alue - 3,402823E38 - 1,401298E-45 ; 1.401298E -45 - 3.402823E38 positiivisille arvoille. Tyyppimerkinnän "!"
Kaksinkertainen 8 tavua Kaksinkertainen tarkkuus liukuluku. Tämän tyyppisten muuttujien avulla voit tallentaa enintään 16 numeroa ja enintään 300 merkkiä pitkiä numeroita. Arvoalue vaihtelee välillä -1.80E+308 - 1.80E+308. Pääte on "#". Sen avulla tehdyt laskelmat ovat likimääräisiä, koska luvun binääriesitystä käytetään IEEE 754 -standardin mukaisesti .
Desimaali 16 tavua Skaalattu kokonaisluku. Tämä tyyppi käyttää numeroiden desimaaliesitystä. Laskelmat sillä, kuten myös Valuutta-tyypillä, ovat tarkkoja. Arvoalue on -7,92E+28 - 7,92E+28. Desimaalityyppistä muuttujaa ei voi ilmoittaa suoraan. Sitä voidaan käyttää vain Variantin alatyyppinä, ja muuttuja voidaan suoratoistaa kyseiseen tyyppiin Cast-funktiolla CDec.
Boolean 2 tavua Boolen tietotyyppi voi tallentaa vain kaksi arvoa: tosi tai epätosi, tosi tai epätosi. VB:n todellinen arvo vastaa kokonaislukua −1 ja väärä arvo on 0, ja implisiittisen tyypin valussa mitä tahansa muuta numeerista arvoa kuin nollaa käsitellään tosina. Tämä toiminta tekee mahdolliseksi käyttää loogisia operaattoreita AND, OR, NOT, XORei vain Boolen algebrassa, vaan myös bittikohtaisissa operaatioissa. [3]
merkkijono 10 + 2*N tavua Vaihtuvapituinen merkkijono. Suunniteltu tallentamaan merkkijonotietoja. Itse merkkijono on tallennettu Unicode -koodauksella , joten jokainen merkki on koodattu 2 tavulla. Jos katsot tyyppiä sisältäpäin, 4 tavua käytetään lisäksi osoittimen tallentamiseen merkkijonoon, 4 tavua merkkijonon kokoa varten ja itse merkkijono päätetään nollamerkeillä (toiset 2 tavua). Näin ollen rivin enimmäiskoko voi olla jopa 2 Gt. Suffiksi kuten "$".
merkkijono*N 2*N tavua Vakiopituinen merkkijono. Aivan kuten merkkijonotyyppi, se tallentaa merkkidataa, paitsi että tietojen koko on kiinteä ja määritetään muuttujan ilmoittamisen yhteydessä. Jos merkkijonoarvo on liian suuri, se katkaistaan ​​vaadittuun kokoon. Jos merkkijono on vaadittua pienempi, koko tasoitetaan lisäämällä välilyönti. On huomattava, että kiinteät merkkijonot ja taulukot sekä rakenteet eivät voi olla suurempia kuin 64 kb.
Päivämäärä 8 tavua Tietotyypin avulla voit tallentaa kellonajan ja päivämäärän arvoja keskiyön, 1. tammikuuta 100 ja keskiyön, 31. joulukuuta 9999 välillä. Jos muuttujalle on määritetty vain päivämääräarvo, aika on 00:00. Kokonaislukuyksikkö edustaa yhtä päivää. Tämän avulla voit lisätä ja vähentää päivämääriä käyttämällä vain matemaattisia operaattoreita, mutta VB tarjoaa erityisiä päivämäärätoimintoja tämän saavuttamiseksi.
Esine 4 tavua Käytetään viittauksen tallentamiseen objektiin. Tämän tyypin muuttujan määritys tehdään käyttämällä Set. Tyyppi itsessään on analoginen IDispatchille; se tallentaa viittauksen IDispatch-liittymään. Jokaiselle objektille on käytettävä IUnknown.
Valuutta 8 tavua Raha. Tässä tyypissä voi olla enintään 4 numeroa desimaalipilkun jälkeen ja enintään 14 ennen sitä. Arvot ovat desimaalilukuja, eivät binaarisia, kuten yhden ja kahden tarkkuuden liukulukutyypeille. Näin laskelmat tehdään oikein. Arvoalue on −922337203685477,6000 - 922337203685477,6000 . Tätä tyyppiä suositellaan taloudellisiin laskelmiin. Suffiksi "@"
Variantti 16 tavua / 22 tavua + N tavua / N tavua Variant-tyyppinen muuttuja voi sisältää minkä tahansa tyyppistä tietoa, mukaan lukien objektiviittaukset, käyttäjän määrittämät tyypit ja taulukot. Visual Basic suorittaa automaattisesti tarvittavat tietomuunnokset . Numeron sisältävä alatyyppi vaatii 16 tavua muistia ja merkkijonotietojen tallentamiseen 22 tavua + itse merkkijonon pituus. Arvoalue on yhtä suuri kuin alatyypin arvoalue. Tämä tyyppi on suoritusnopeudeltaan hitain, koska arvojen purkaminen ja pakkaaminen vie aikaa.

Operaattorit

Visual Basic -kieli sisältää monia operaattoreita, jotka vastaavat aritmeettisista operaatioista, vertailu- ja osoitusoperaatioista sekä ketjuttamisesta .

toimeksiantooperaattori

  • Yhtävyysmerkkiä (=) käytetään arvon määrittämiseen muuttujalle. On myös mahdollista käyttää avainsanaa Letennen muuttujan nimeä. BASIC-kielen varhaisissa versioissa se vaadittiin, mutta Visual Basicissa se on jätetty yhteensopivuuden vuoksi. Objektityypin määrittäminen muuttujalle edellyttää avainsanan läsnäoloa Set. Esimerkkejä: nVar = 10, Let iCount = 20, Set refDouble = objClass.

C:ssä toteutettu moninkertainen osoitus ei ole mahdollista. A = B = Cei tarkoita sitä A, Bja Cniillä on samat arvot. VB arvioi lausekkeen ja määrittää tuloksen B = Cmuuttujalle , tai , 0 tai −1 tyypistä riippuen. ATrueFalse

Aritmeettiset operaattorit

  • yhteenlasku (+), vähennyslasku (-), kertolasku (*), jako (/)
  • eksponentio (^). Esimerkki:2 ^ 3 = 8
  • kokonaislukujako (\). Jakaa ensimmäisen luvun toisella ja hylkää (ei pyöristä) murto-osan. Esimerkki:5 \ 2 = 2
  • modulo-jako (Mod). Jakaa ensimmäisen luvun toisella ja palauttaa vain jaon loppuosan. Esimerkki:5 Mod 2 = 1

Vertailuoperaattorit

  • tasa-arvo (=). Esimerkki:If nVar = 10 Then
  • suurempi ja pienempi kuin (> ja <). Esimerkki:If nVar > 10 Then
  • suurempi tai yhtä suuri ja pienempi tai yhtä suuri kuin (>= ja <=). Esimerkki:If nVar >= 10 Then
  • ei ole yhtä suuri (<>). Esimerkki:If nVar <> 10 Then
  • esineiden vertailu (Is). Määrittää, viittaavatko objektimuuttujat samaan vai eri objektiin. Esimerkki:If obj1 Is obj2 Then
  • samankaltaisuusoperaattori (Like). Vertaa merkkijonoobjektia kuvioon ja määrittää, sopiiko kuvio yhteen. Esimerkki:If strEmail Like "*@*.*" Then

Loogiset operaattorit

  • looginen AND (Ja) - Lausekkeen molempien osien on oltava tosia, jotta koko lauseke muuttuu todeksi. Esimerkki:If (2 * 2 = 4) And (2 * 3 = 6) Then
  • looginen TAI (tai) - vähintään yhden lausekkeen on oltava tosi. Esimerkki:If (2 * 2 = 5) Or (2 * 2 = 4) Then
  • looginen negaatio (ei) - palauttaa True, jos ehto on epätosi ja päinvastoin. Esimerkki:If Not(2 * 2 = 5) Then
  • looginen poikkeus (Xor) - lausekkeessa E1 Xor E2palauttaa Truejos vain E1 = Truetai vain E2 = True, muuten - False.
  • Ekvivalenssi (Eqv) − Arvioi kahden lausekkeen ekvivalenssin, palauttaa, Truejos niillä on sama arvo.
  • implikaatio (Imp) — palauttaa Falsejos E1 = Trueja E2 = False, muuten — True.

Ketjutusoperaattorit

  • (+) -operaattoria käytetään merkkijonojen ketjuttamiseen. Jos lausekkeen molemmat osat ovat merkkityyppisiä, merkkijonojen yhdistämistoiminto onnistuu. Jos lausekkeen jollakin osalla on numeerinen tyyppi, mutta toista osaa ei voida muuntaa oikein luvuksi, tapahtuu typecast-virhe. Tällaisten tilanteiden välttämiseksi on suositeltavaa käyttää asianmukaisia ​​operaattoreita tyypin muuntamiseen tai käyttää (&)-operaattoria merkkijonojen ketjuttamiseen.
  • Operaattori (&) muuntaa lausekkeet ja arvot automaattisesti merkkijonotyypeiksi. Esimerkiksi lauseke str = "10" & 20antaa tuloksen "1020", ei "30". Jos käyttäisimme (+)-operaattoria tässä lausekkeessa, VB heittäisi lausekkeen "10" numeeriseen tyyppiin 10, ja onnistuessaan suorittaisi aritmeettisen summauksen.

Ohjausrakenteet

Visual Basicissa, kuten monissa ohjelmointikielissä, on rakenteita, jotka ohjaavat toimintojen suoritusjärjestystä. Jotkut konstrukteista, kuten GoSubja Return, säilytetään yhteensopivuuden vuoksi BASIC-kielen aikaisempien versioiden kanssa, mutta toteutus erillisinä toimenpiteinä voi tarjota jäsennellymmän koodin.

Haaraoperaattori

Yleinen syntaksi:

'Kirjoita haarakäsky yhdelle riville If < ehto > sitten [ action_kun_ehto_on_tosi ] 'Tämän merkinnän avulla voit suorittaa toimintoja ehdon totuudesta riippuen If < ehto > Then [ action_when_condition_is true ] Else [ action_when_condition_false ] 'Kirjoita monirivinen haarakäsky If < ehto > Sitten [ toiminta_kun_ehto_on tosi ] ElseIf < ehto2 > Siis [ toiminto_kun_ehto2_tosi ] ElseIf < ehtoN > Then [ action_kun_ehtoN_tosi ] Else [ toiminta_kun_ehto_epätosi ] End If Operaattorin valinta

Yleinen syntaksi:

Valitse tapaus < arvo_testattu > 'Yhden tai useamman ehdon mukaan testattava muuttuja tai lauseke Case < arvo_1 > 'Toiminto suoritetaan, jos testattava arvo vastaa arvoa 1 [ action_1 ] Tapaus < arvo_2 > , < arvo_3 > , < arvo_3 > Testit arvoluettelo. Jos osuma löytyy, suoritetaan toiminto [ action_2 ] Case < value_5 > To < value_6 > 'Tarkistaa arvoalueen [ action_3 ] Case Is >= < value_7 > 'Tarkistaa totuuden arvon ehdolla [ action_4 ] Tapaus muu 'Toiminto suoritetaan, jos mikään ehdoista ei täyty [ action_5 ] Lopeta valinta

Esimerkki: erilaisten viestien näyttäminen muuttujan arvon mukaan

'Syötetään muuttuja ja annetaan sille arvo manuaalisesti Dim X As Double X = InputBox ( "Syötä muuttujan X numeerinen arvo" ) Valitse tapaus X 'Tarkista, sopiiko arvomme johonkin kuvitteelliseen funktioon Tapaus on < 5 , Is >= 20 , 12 - 15 'Kelvollisten arvojen alue MsgBox "Kelvollinen arvo jollekin funktiolle" Tapaus Muu 'Virheelliset arvot MsgBox " Arvoa ei voi käyttää joissakin toiminnoissa" Lopetusvalinta Silmukka laskurilla

Yleinen syntaksi:

For < variable > = < value > To < end_value > [ Step < step_value >] [ lauseke ] [ Exit For ] 'Poistu silmukasta Seuraava [ muuttuja ]

Esimerkki: parillisten lukujen summan laskeminen välillä 1-100

I = 0 - 100 Vaihe 2 Summa = Summa + I Seuraava _ Yhteinen sykli

Yleinen syntaksi:

Jokaiselle < muuttujalle > < kokoelmassa > [ lauseke_lohko ] [ Exit For ] ' Pakota poistumissilmukka Seuraava [ muuttuja ]

Esimerkki: Näyttää taulukon jokaisen elementin

Dim strItem Variant _ Jokaiselle taulukossa olevalle strItem ( " omena " , " päärynä" , "luumu" ) Tulosta strItem Seuraava Ehdollinen silmukka

Yleinen syntaksi:

Do While < ehto > ' Silmukka suoritetaan, kun ehto on tosi [ lauseke lohko ] [ Exit Do ] 'Pakotettu poistuminen silmukasta Do Until < ehto > 'Silmukka suoritetaan, kun ehto on epätosi [ lauseke lohko ] [ Exit Do ] Loop Vaikka < ehto > 'Silmukka suoritetaan, kun ehto on tosi [ lauseke_lohko ] Wend

Esimerkki: Tekstitiedoston lukeminen rivi riviltä

Avaa "file.txt" syötteelle As # 1 Do While Not EOF ( 1 ) ' Palauta True, jos tiedoston loppua odotetaan Rivisyöttö # 1 , strBuffer 'Lue rivi Debug - muuttujaan . Tulosta strBuffer 'Tuloste virheenkorjausikkunaan Loop Close # 1 Silmukka jälkiehdon kanssa

Yleinen syntaksi:

Tee [ lauseke_lohko ] [ Poistu Do ] Loop While < ehto > Do [ lausekelohko ] [ Poistu Do ] Loop Until < ehto > _

Menettelyt ja toiminnot

Aliohjelmat ovat yksi kielen peruselementeistä. Ne ovat menettelyjä ja toimintoja.

  • Toimenpide alkaa operaattorilla Subja päättyy merkkiin End Sub, jonka väliin koodi sijoitetaan. Proseduureja voi kutsua joko itse Visual Basic, esimerkiksi toteutettu tapahtumakäsittelijöinä, tai muilla proseduureilla ja funktioilla. Tapahtumaproseduurin nimi koostuu objektin nimestä, alaviivasta ja tapahtuman nimestä:
Yksityinen Sub Command1_Click () 'Tapahtuma käynnistyy, kun napsautetaan painiketta ... End Sub Yksityinen ali Form_MouseMove ( painike kokonaislukuna , vaihto kokonaislukuna , X yksittäisenä , Y yksittäisenä ) ' Kutsutaan , kun hiiren osoitin liikkuu lomakeikkunassa ... End Sub

Visual Basic todella toteuttaa Windowsin viestisilmukan. Lomakeesimerkissä silmukka suodattaa viestin WM_MOUSEMOVEja kutsuu automaattisesti proseduurin Form_MouseMoveparametrein: mitä hiiren painikkeita on painettu, osoittimen koordinaatit. Tämä mekanismi piilottaa joitain Windows-ympäristön ohjelmoinnin näkökohtia kehittäjältä, jolloin hän voi aloittaa välittömästi kaupallisen koodin kirjoittamisen. Useimmissa tapauksissa ratkaistavien tehtävien luokka ei vaadi ohjelmoijalta tietoa viesteistä ja ikkunoiden toiminnoista. Mutta Visual Basic ei rajoita ohjelmoijaa toteuttamasta ikkunaviestien käsittelyä. Tämä mahdollistaa erittäin joustavan lähestymistavan sovellusten rakentamiseen, mutta vaatii myös riittävää kokemusta tällaisen koodin kirjoittamisesta, mikä voi saada ohjelman toimimaan epävakaasti kaatumiseen asti.

  • VB:n funktiot alkavat avainsanalla Functionja päättyvät End Function. Funktion palautusarvo on määritetty muuttujalle, joka vastaa funktion nimeä. Proseduurin tai toiminnon suorittamisen keskeyttämiseksi ennenaikaisesti on olemassa erityisiä operaattoreita Exit Subja Exit Function. Visual Basic 6.0 sisältää sisäänrakennettuja toimintoja tiedostojärjestelmän kanssa työskentelyä varten, päivämäärä ja kellonaika, matemaattiset funktiot, toiminnot vuorovaikutukseen järjestelmän kanssa, toimintoja merkkijonojen kanssa työskentelyyn, funktioita casting-tyyppejä varten ja toimintoja taloudellisia laskelmia varten. On myös dokumentoimattomia toimintoja, joiden avulla voit työskennellä esimerkiksi osoittimien kanssa.

Esimerkki funktiosta toisen asteen yhtälön ratkaisemiseksi:

Yksityinen Sub Main ( ) Dim RetX1 As Double , RetX2 As Double Dim strStatus As String strStatus = SolveQuadraticEquation ( 4 , 6 , 2 , RetX1 , RetX2 ) 'Ratkaise yhtälö 4*X^2 + 6*X - 2 = 0 'Näytä vastaus MsgBox "Resoluutio: " & strStatus & vbCrLf & _ "X1 = " & RetX1 & vbCrLf & _ "X2 = " & RetX2 , vbInformation End Sub . _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ) - ( 4 * A * C ) 'Hae erottimen arvo Jos D >= 0 , niin X1 = ( - B - Sqr ( D )) / ( 2 * A ) ' Laske yhtälön X2 = ( - B + Sqr ( D )) juuret / ( 2 * A ) SolveQuadraticEquation = "Ratkaisu löydetty" 'Funktio palauttaa viestin ratkaisusta Else SolveQuadraticEquation = "Discriminantti < 0. Ei juuria" End If End Function

Tässä esimerkissä näet muuntimen , ja ByValargumenttien edessä . Tämä varmistaa, että funktion parametrit välitetään arvon mukaan . Muokkaus puolestaan ​​välittää arvon viitteellä . Tämän tyyppiselle modifioijalle funktio voi muokata parametreina välitettyjen muuttujien arvoja. Visual Basic välittää oletusarvoisesti arvot aina viitteellä, jos mitään modifioimista ei ole määritetty. ABCByRef

Moduulit ja luokat

Visual Basicin ohjelmakoodi on tallennettu moduuleihin. Moduuleja on vain kolmenlaisia: lomakemoduuli (Form), vakiomoduuli (Module) ja luokkamoduuli (Class Module).

  • Lomakemoduuli (tiedostotunniste *.frm) on useimpien Visual Basic -sovellusten perusta. Lomakemoduuli sisältää tapahtumankäsittelyproseduurit, yleiset proseduurit ja lomaketasolla ilmoitetut: muuttujat, vakiot, tyypit ja ulkoiset proseduurit. Jos avaat lomakemoduulin tekstieditorissa, näet lomakkeen ja sen säätimien kuvaukset, mukaan lukien niiden ominaisuudet. Lomakemoduuliin sijoitettu koodi voi viitata muihin lomakkeisiin tai sovellusobjekteihin.
  • Vakiomoduuli (tiedostotunniste *.bas) on säilö menettelyille, funktioille ja ilmoituksille, joita muut sovellusmoduulit yleensä käyttävät. Ne voivat sisältää globaalin muuttujan (koko sovelluksen käytettävissä) tai moduulitasolla ilmoitettuja: muuttujia, vakioita, tyyppejä, ulkoisia ja globaaleja toimenpiteitä. Vakiomoduuliin sijoitettu koodi ei välttämättä liity tiettyyn sovellukseen; jos et käytä lomakemoduulien viittauksia tai ohjausobjektien nimiä, vakiomoduulia voidaan käyttää muissa sovelluksissa.
  • Luokkamoduuli (tiedostotunniste *.cls) on Visual Basicin olioohjelmoinnin perusta. Luokkamoduulia käytetään uusien objektien luomiseen. Näillä objekteilla voi olla omat ominaisuutensa, menetelmänsä ja tapahtumansa. Itse asiassa lomake on vain luokkamoduuli, joka voi sisältää siihen asetettuja ohjaimia ja näyttää ne näytöllä. Luokat voivat sisältää erityisiä menettelyjä Class_Initializeja Class_Terminate, jotka ovat tehokkaasti rakentajia ja tuhoajia .

Olio-ohjelmointi

Yksinkertainen objektien välinen vuorovaikutus on yksi Visual Basic -paradigman peruskomponenteista. Itse objektia kutsutaan luokan ilmentymäksi . VB-objektimalli tarjoaa erilaisia ​​luokkia työskentelyyn lomakkeiden, säätimien, leikepöydän, kokoelmien, näytön jne. kanssa. Vuorovaikutusta muiden objektien kanssa luokka tarjoaa kehittäjälle käyttöliittymän , joka koostuu ominaisuuksista , menetelmistä ja tapahtumista .

Uuden objektin luominen luokasta on mahdollista aikaisin tai myöhään sitomalla. Varhaisessa sitomisessa avainsanaa käytetään Newennen luokan nimeä. Myöhäiseen sidontaan käytetään funktiota CreateObject, joka palauttaa viittauksen luotuun objektiin. Viittaukset määritetään tyyppisille muuttujille Objectkäyttämällä operaattoria Set. Luokan menetelmiin ja ominaisuuksiin pääsee käsiksi piste-operaattorilla ., joka sijoitetaan välittömästi objektityypin muuttujan nimen perään. Jos luokka sisältää tapahtumia, muuttujat ilmoitetaan avainsanalla WithEvents, jolloin tapahtumankäsittelymenettelyt ovat käytettävissä.

Esimerkki näyttää, kuinka ohjelma toimii vuorovaikutuksessa Microsoft Scripting Runtime -kirjaston kanssa, joka tarjoaa objekteja tiedostojärjestelmän kanssa työskentelemistä varten:

Public Sub Main () Dim objFSO As New FileSystemObject 'Luo luokan esiintymä käyttämällä New Dim objWindows As Folder -käskyä Aseta objWindows = objFSO . GetFolder ( Environ ( "SYSTEMROOT" )) 'Kutsu GetFolder-luokkametodia ja anna viittaus tuloksena olevaan objektiin MsgBox "Windows-kansio:" & objWindows . Polku 'Lue MsgBox -luokan ominaisuudet "Luotumispäivämäärä:" & Muoto ( objWindows . DateCreated , "VVVV-KK-PP H:mm:ss" ) Himmeä sTextFilePath merkkijonona Dim objTS Tekstivirtana _ _ sTextFilePath = objFSO . BuildPath ( Environ ( "TEMP" ), "Test file.txt" ) 'Kaksi parametria sisältävä menetelmä palauttaa arvon, jonka tyyppi on String Aseta objTS = objFSO . CreateTextFile ( sTextFilePath , True ) objTS . Kirjoita "Hei Wikipedia!" objTS . kiinni objFSO . DeleteFile sTextFilePath , True Set objFSO = Ei mitään 'Assigning Nothing vapauttaa viittauksen ja objekti voi kutsua destructor-proseduurin Set objWindows = Ei mitään 'VB kutsuu automaattisesti tuhoajaa, kun objektiin ei enää viitata Aseta objTS = Ei mitään End Sub

Visual Basic antaa kehittäjälle mahdollisuuden luoda uusia luokkia itse. Toisin kuin muut ohjelmointikielet, kuten Java ja C++, Visual Basicilla ei ole täyttä tukea OOP:lle.

Kuten tiedät, abstraktia luokkaa tarvitaan luomaan mallin käyttöliittymää muille luokille. Visual Basicissa luokkia, joissa on luokan jäseniä, mutta ei toteutusta, voidaan käyttää abstrakteina luokkina, mutta itse asiassa ne eivät ole. Voit aina luoda objekteja Visual Basic -luokista, vaikka ne eivät sisältäisi koodia [4]

Kapselointiperiaate toimii Visual Basicissa . Luokan jäsenten käyttöoikeuden rajoittamiseksi määritteitä Publicja käytetään kuvattaessa proseduureja, funktioita, vakioita, muuttujia ja käyttäjän määrittämiä tyyppejä Private.Friend

Toteutuksen periytymistä ei tueta. Visual Basic tukee vain käyttöliittymän periytymistäImplements. Liittymää periessään mikä tahansa luokka voi toimia rajapinnan perusluokkana. Yleensä mikä tahansa luokka voi toimia rajapinnan perusluokkana.

Polymorfismi pakotetaan vain rajapintojen kautta, koska VB ei tue periytymistä. Polymorfismin toteutus on esitetty esimerkkinä Liikenne - luokan rajapinnan toteuttavista auto - ja lentokoneluokista .

'Class ITransport.cls Public Function GetMaxSpeed ​​( ) Pitkän pään toimintona 'Class CAuto.cls toteuttaa ITransport 'Peri käyttöliittymän Yksityinen toiminto ITransport_GetMaxSpeed ​​() niin kauan kuin menetelmän käyttöönotto ITransport_GetMaxSpeed ​​​​= 240 lopputoiminto 'Class CFly.cls toteuttaa ITransportin Yksityinen toiminto ITransport_GetMaxSpeed ​​( ) As Long ITransport_GetMaxSpeed ​​​​= 700 lopputoiminto 'Vakiomoduuli Program.bas Vaihtoehto Explicit Public Sub Main () Dim T As ITransport 'Ilmoita ITransport-tyyppinen muuttuja Aseta T = Uusi cAuto WhatTransportSpeed ​​​​T 'Välitetään viittaus prosessiin, joka kutsuu haluttua luokkamenetelmää toteutuksesta riippuen Aseta T = Uusi cFly WhatTransportSpeed ​​​​T End Sub "Funktiolla on argumentti, joka ottaa viittauksen ITransport-rajapinnan toteuttavaan objektiin. Public Sub WhatTransportSpeed ​​( Transport As ITransport ) MsgBox "Maksiminopeus:" & Transport . GetMaxSpeed ​​() End Sub

Lomakkeen suunnittelija

Koodieditori

Koodieditori on tekstieditori, jossa on lisäominaisuuksia helppoa ja nopeaa lähdekoodin syöttämistä varten:

  • Lähdekoodin syntaksin korostus .
  • Ikkunan vaakasuora jako 2 paneeliin.
  • Näytä kaikki lähdekoodi tai tietty menettely.
  • Luettelo ohjelmassa käytetyistä objekteista sekä luettelo tapahtumista, joita kehittäjä voi käsitellä.
  • Automaattinen kirjainkoon vaihto. Avainsanojen ensimmäinen kirjain on isolla kirjaimella, muuttujien nimien kirjainkoko vaihtuu automaattisesti vastaamaan kirjainkokoa, joka määritettiin niiden ilmoittamisen yhteydessä.
  • Funktioiden, toimintojen ja muuttujien nimien automaattinen täydennys IntelliSensen avulla .
  • Tarkistetaan koodia syntaksivirheiden varalta.
  • Älykäs lohkotaulukko _

Virheenkorjaus

Integroitu kehitysympäristö tarjoaa ohjelmoijalle runsaasti mahdollisuuksia ohjelmien virheenkorjaukseen. Yksi Visual Basicin eduista on mahdollisuus muuttaa ohjelman lähdekoodia suuressa määrin kääntämättä sitä kokonaan uudelleen ja käynnistämättä sitä uudelleen. Virheenkorjauksen aikana kehittäjälle annetaan mahdollisuus siirtää parhaillaan suoritettavaa käskyä osoittavaa merkkiä sekä eteenpäin - ohittaa osa koodista että taaksepäin - pakottaa VB suorittamaan uudelleen jo käsitellyt ohjeet.

Ympäristö tarjoaa muun muassa virheenkorjaustyökaluja, kuten välittömän ikkunan, paikalliset-ikkunan, katseluikkunan ja puhelupinon katseluohjelman . Tällaisten edistyneiden työkalujen avulla ohjelmoija voi suorittaa syvällisen analyysin tutkittavasta algoritmista virheenkorjaussovelluksessa.

Visual Basic siirtyy virheenkorjaustilaan, kun jokin seuraavista ehdoista täyttyy:

  • Ohjeita suoritettaessaStop
  • Suorittaessaan käskyä, jolla on keskeytyskohta (katkestuspiste)
  • Kun tapahtuu virhe, jolle ei löydy sopivaa virheenkäsittelijää
  • Pikanäppäimiä painamallaCtrl + Break
  • kätevä ohjelmointi

Kokoelma

Integroidun kehitysympäristön mukana tulee kääntäjä P-koodilla (P-koodi) , natiivi Back-End x86 -yhteensopiva kääntäjä ja linkki ( linkkeri ). Kahden kääntäjän läsnäolo mahdollistaa Visual Basicin määrittämisen sekä käännetylle että tulkitukselle. Riippumatta siitä, mikä kääntäjä valitaan, sovellukset vaativat Visual Basic -ajonaikaisen virtuaalikoneen, joka on kirjasto MSVBVMXX.DLL, jossa XX on kieliversio [5]

  • P-koodi mahdollistaa sovelluksen ajamisen laitteistosta riippumattomassa virtuaalikoneessa, joka kääntää ohjelman pseudokoodin prosessorin konekoodiksi reaaliajassa. Teoriassa tämä lähestymistapa mahdollistaa sovellusten siirrettävyyden uusille laitteistoalustoille ilman, että ohjelmien lähdekoodia tarvitsee muokata. Yksi P-koodiin kääntämiseen liittyvistä tärkeimmistä eduista on lähdekoodin "kuuma" muokkaus virheenkorjaustilassa . Vianetsintätilassa Visual Basic kääntää ohjelman aina P-koodiksi, sitten suoritus voidaan keskeyttää, ohjelmoija tekee merkittäviä muutoksia lähdekoodiin ja sitten suoritus jatkuu: täydellistä uudelleenkääntämistä ja sovelluksen uudelleenkäynnistystä ei tarvita. Kääntäjä luo suoritettavan tiedoston PE -muodossa , mutta todellisen prosessorin ohjeiden sijaan se sisältää virtuaalikoneen alustavan koodin ja sovelluksen tavukoodin. P-koodiksi kääntämisen suurin haittapuoli on ohjelman alhainen suoritusnopeus, koska suurin osa ajasta kuluu ohjelman kääntämiseen konekoodiksi.
  • Alkuperäinen käännös tuli mahdolliseksi Visual Basic 5.0:n julkaisun myötä. Tämän kääntäjän avulla voit luoda tehokkaan koodin verrattuna sovelluksiin, jotka on käännetty P-koodiksi. Useimmat käskyt on käännetty konekoodiin: aritmeettiset operaatiot, ohjauskonstruktit, mutta toiminnot, kuten sisäänrakennettujen kielifunktioiden kutsuminen, merkkijonojen käsittely ja virheiden käsittely, suorittaa Visual Basic -ajonaikainen kirjasto. Näin ollen, vaikka sovellus on käännetty alkuperäiseen koodiin, se vaatii Visual Basic -virtuaalikoneen toimiakseen. Myös funktioiden usein kutsuminen ajonaikaisesta kirjastosta johtaa sovelluksen suoritusnopeuden heikkenemiseen. Mutta kaikista puutteista huolimatta Native-kääntäjä tarjoaa hyväksyttävän koodin suoritusnopeuden. Kääntäjä sisältää useita optimointivaihtoehtoja. Projektin käännösvälilehdellä voit poistaa käytöstä joitakin tarkistustoimintoja: taulukon rajojen ulkopuolisuus, kokonaislukujen ylivuoto jne. Kun nämä parametrit asetetaan oikein, kehittäjä voi saada lisätehoa kehitettävän sovelluksen suorituskykyyn.

Käyttöönotto

Microsoft Visual Basic 6.0:n mukana tulee ohjattu paketointi- ja käyttöönottotoiminto [6] Visual Basic -projektiin perustuvien asennuspakettien luomiseen. Verrattuna tunnettuun edeltäjäänsä, Setup Wizardiin, P&D Wizard tarjoaa uusia toimintoja, mutta valitettavasti uusi työkalu sisältää joitain virheitä. Yksi tämän sovelluksen ongelmista on päivämäärän muunnosvirhe, jos käyttäjän käyttöjärjestelmässä asetettu maa-asetus poikkeaa amerikkalaisesta. On olemassa kolmannen osapuolen sovelluksia, jotka tarjoavat edistyneempiä työkaluja asennuspakettien hallintaan.

On myös mahdollista asentaa VB-sovelluksia yksinkertaisella kopioimalla, joka tiivistyy muutamaan vaiheeseen:

  • Jos käyttöjärjestelmän järjestelmähakemistossa ei ole Visual Basic -sovelluksen ajonaikaista tiedostoa (MSVBVM60.DLL), sinun on ensin kopioitava se sinne.
  • Jos sovellus sisältää standardista poikkeavia ohjausobjekteja, kuten ActiveX - komponentteja, sinun on ensin kopioitava ne järjestelmähakemistoon ja rekisteröitävä ne Microsoft Windowsin järjestelmärekisteriin. Komponenttien rekisteröinti voidaan automatisoida esimerkiksi suorittamalla komento regsvr32.exeja välittämällä tiedostoon koko polku tai ohjelmallisesti kutsumalla suoraan menetelmää DllRegisterServer, joka toteuttaa COM - yhteensopivan komponentin.
  • Luo ohjelmakansio, kopioi suoritettava tiedosto, tarvittaessa luo sovelluksen pikakuvake käyttäjän työpöydälle.

Lisäominaisuudet

ActiveX (OCX-ohjaimet)

Versiosta VB 5.0 alkaen kehittäjälle annetaan mahdollisuus paitsi käyttää valmiita ActiveX -komponentteja , myös luoda omia. VB huolehtii kaikesta apukoodin luomisesta, joka on suunniteltu rekisteröimään komponentin tietoja järjestelmärekisteriin, toteuttamaan IDispatch-rajapinta, luomaan yksilöllisiä GUID -tunnisteita, joita käytetään tunnisteina luokille (CLSID), rajapinnoille (IID) ja tyyppikirjastoille ( LIBID). Tämän lähestymistavan ansiosta ohjelmoijan tarvitsee vain luoda luokkia, joissa on tarvittavat toiminnot.

Uusien luokka- ja käyttöliittymä-GUID-tunnusten luominen riippuu projektin ominaisuudet -välilehden yhteensopivuusvaihtoehdosta. Se voi olla yksi kolmesta tilasta:

  • Ei yhteensopivuutta – Visual Basic luo uuden käyttöliittymän ja luokkatunnisteet joka kerta, kun projekti rakennetaan tai käännetään. Jokaista komponentin koontiversiota voidaan käyttää vain sovelluksissa, jotka on rakennettu toimimaan kyseisen komponentin tietyn version kanssa, eli jos luokkaa ja projektin nimeä ei muuteta käännösvaiheessa, luodaan uusia tunnisteita ja ne korvaavat rekisterin tiedot. , joten vanhoihin tunnisteisiin viittaavat sovellukset eivät voi käynnistyä.
  • Suunnittelutason yhteensopivuus – Tämän asetuksen tarkoituksena on säilyttää yhteensopivuus testauksen aikana, jotta komponentin luomisen jälkeen käyttäytyminen on sama kuin jos asetus olisi asetettu ilman yhteensopivuutta.
  • Binaariyhteensopivuus – Projektia käännettäessä Visual Basic luo uusia tunnisteita tarpeen mukaan. Komponentin aiempien versioiden luokka- ja käyttöliittymätunnisteet säilytetään. Metodin toteutuksen muuttaminen ei muuta tunnisteita. Myöskään uuden luokan ja menetelmien lisääminen ei muuta nykyistä käyttöliittymää. Siten vanhat sovellukset voivat käyttää komponentin vanhaa käyttöliittymää ja uudet sovellukset voivat viitata käyttöliittymän uuteen versioon. Jos menetelmää muutetaan tai se poistetaan käyttöliittymästä, VB varoittaa epäjohdonmukaisuudesta komponentin käyttöliittymän kanssa ja suosittelee sovellusten kääntämistä uudelleen. [7]

Kun käännös on valmis, tulos on binäärikirjastotiedosto COM -määrityksen mukaisesti . Tämä komponentti toteuttaa vähintään kaksi liitäntää : IUnknown ja IDispatch. Tyyppikirjasto ( TLB ) integroidaan suoritettavan tiedoston resurssien sisään. Lisäksi luodaan hyödyllisiä tietoja sisältäviä tiedostoja, kuten EXP ja LIB.

Windows API (Application Programming Interface)

Visual Basic tarjoaa kielimahdollisuudet dynaamisten linkkikirjastojen (DLL) funktioiden ilmoittamiseen ja kutsumiseen. Tämän mekanismin avulla voit laajentaa sovelluksia käyttämällä muiden kehittäjien tarjoamia lisäkirjastoja, mukaan lukien eri ohjelmointikielillä kirjoitetut. Microsoft Windows -käyttöjärjestelmä tarjoaa yhden tällaisen kirjastojoukon.

Yleinen syntaksi funktiolle ja proseduurille on seuraava:

[ Julkinen | Yksityinen ] Ilmoita ali < menettelyn_nimi > lib "dynaaminen_kirjaston_nimi" [ Alias ​​"alias" ] [ ( parametrit ) ] [ Julkinen | Yksityinen ] Ilmoita funktio < funktion_nimi > lib "dynaaminen_kirjaston_nimi" [ Alias ​​"alias " ] [ ( parametrit ) ] [ paluutyyppinä ]

Alias ​​on määritettävä useissa tapauksissa: funktion nimessä käytetään Visual Basic -varattuja tunnisteita, nimi sisältää virheellisiä merkkejä tai ympäristö ei voi tulkita sitä oikein. Kutsuttujen funktioiden on tuettava StdCall - soittokäytäntöä .

Kun parametri, jonka merkkijonotyyppi on välitetty, WINAPI-funktiolle, VB muuntaa automaattisesti koodauksen Unicodesta ANSI:ksi, kun toiminto on suoritettu, käänteinen muunnos ANSI:sta Unicodeksi tapahtuu. Automaattisen merkkijonon muuntamisen estämiseksi funktion argumentit on määritettävä pitkiksi ja merkkijonoon on välitettävä osoitin funktiolla StrPtr, jolloin voidaan optimoida useita funktiokutsuja soittavan sovelluksen suorituskyky.

Esimerkki Windows API:n kutsumisesta saadakseen koko polun Windows-hakemistoon ja näyttääksesi viestin näytöllä:

Yksityinen Declare Function GetWindowsDirectory Lib "kernel32.dll" Alias ​​"GetWindowsDirectoryA" ( ByVal puskuri merkkijonona , ByVal nSize As Long ) Pitkäksi Private Declare Function MessageBox Lib " user32.dll " Alias ​​" MessageBox hWA " ( ByVal , ByVal lpText As String , ByVal lpCaption As String , ByVal wType As Long ) As Long Yksityinen Const MB_ICONASTERISK As Long = 64 Public Sub Main () Dim buffer As String 'Muuttuja, johon funktion tulos vastaanotetaan. Dim ret Len As Long puskuri = String ( 256 , vbNullChar ) linssi = GetWindowsDirectory ( puskuri , Len ( puskuri )) ' Funktion kutsupuskuri = Vasen ( puskuri , linssi ) MessageBox 0 & , "OS asennettu hakemistoon: " & puskuri , "Tiedot" , MB_ICONASTERISK ' Lopeta alitoimintokutsu

On syytä huomata, että WINAPI-funktioiden kutsuminen liittyy tiettyihin sisäisiin sopimuksiin, nimittäin siihen, kuinka funktio palauttaa tuloksen, mitä rakenteita sen on läpäistävä, kuinka monta argumenttia ja niiden tyypit sisältyvät palautusarvoon. Kehittäjät käyttävät kirjastojen mukana toimitettua teknistä dokumentaatiota toimintojen ja rakenteiden ilmoittamiseen.

Edut ja haitat

Edut

  • Nopea sovellusten luominen graafisella käyttöliittymällä Microsoft Windowsille .
  • Kielen yksinkertainen syntaksi tarjoaa alhaisen pääsyn esteen.
  • Kyky kääntää sekä konekoodiksi että P-koodiksi (ohjelmoijan valinnan mukaan).
  • Tyyppiturvallisuus tarjoaa suojan osoittimien käyttöön ja muistin käyttöön liittyviltä virheiltä. Tämä näkökohta tekee Visual Basic -sovelluksista vakaampia, mutta on myös kritiikin kohteena.
  • Mahdollisuus käyttää useimpia WinAPI - toimintoja [8] laajentamaan sovelluksen toimintoja. Tätä ongelmaa on tutkinut täydellisimmin Dan Appleman , joka kirjoitti kirjan "Visual Basic Programmer's Guide to the Win32 API".

Haitat

  • Tuki vain Windows- ja Mac OS X -perheiden käyttöjärjestelmille (poikkeus - VB1 DOS -käyttöjärjestelmälle ).
  • Täysimääräisen mekanismin puuttuminen objektien toteutuksen perimiseksi [9] . Kielessä oleva periytyminen mahdollistaa vain rajapintojen perimisen , mutta et niiden toteutusta.
  • Lähes kaikki sisäänrakennetut kieliominaisuudet on toteutettu ajonaikaisen kirjaston kautta , mikä puolestaan ​​tekee paljon "ylimääräistä" tyyppitarkistus- ja/tai tyyppimuunnostyötä, mikä hidastaa sovellusten nopeutta.

Kieli on vahvasti sidottu kehitysympäristöönsä ja Microsoft Windows -käyttöjärjestelmään, koska se on yksinomaan Windows-sovellusten kirjoitustyökalu. Sitoutuminen ympäristöön on siinä, että ohjelmointia auttamaan ja helpottamaan suunniteltuja työkaluja on suuri määrä: sisäänrakennettu debuggeri, muuttujien ja tietorakenteiden katselu lennossa, debug-ikkuna, työkaluvinkit ohjelmaa kirjoitettaessa ( IntelliSense ). Kaikki nämä edut tekevät Visual Basicin käyttämisen hyödyttömäksi ja jopa mahdottomaksi kehitysympäristön ulkopuolella, esimerkiksi tavallisessa tekstieditorissa.

Kritiikki

  • Usein kritisoidaan sellaisia ​​Visual Basicin näkökohtia, kuten kyky poistaa käytöstä ilmoitettujen muuttujien seuranta , kyky implisiittisesti muuntaa muuttujia , tietotyypin "Variant" olemassaolo. Kriitikoiden mukaan tämä mahdollistaa erittäin huonon koodin kirjoittamisen . Toisaalta tätä voidaan pitää plussana, koska VB ei pakota "hyvää tyyliä", vaan antaa ohjelmoijalle enemmän vapautta .
  • Osoittimien puute , matalan tason muistin käyttö, ASM - lisäkkeet, kyvyttömyys viedä toimintoja alkuperäisiin kirjastoihin, vakiokonsolisovelluskehitystyökalujen puute. Vaikka Visual Basic -paradigma sallii keskimääräisen VB - ohjelmoijan pärjätä ilman kaikkea tätä, myös näitä asioita kritisoidaan usein. Ja vaikka käyttämällä dokumentoimattomia ominaisuuksia ja tiettyjä temppuja, kaikki tämä voidaan toteuttaa VB: ssä (esimerkiksi käyttämällä toimintoja osoittimien hankkimiseen VarPtr, StrPtrja ObjPtr); näiden temppujen käyttäminen on joskus vaikeampaa kuin esimerkiksi C++ :ssa .

On kuitenkin syytä huomata, että kaikki kielen puutteet johtuvat sen pääedusta - graafisen käyttöliittymän kehittämisen yksinkertaisuudesta. Siksi monet ohjelmoijat käyttävät Visual Basicia käyttöliittymän kehittämiseen, ja ohjelman toiminnallisuus toteutetaan muilla kielillä kirjoitettuina dynaamisina linkkikirjastoina ( DLL ) (esimerkiksi C++ ).

Toteutukset ja murteet

Visual Basic for Applications (VBA)

Tämä kehitysympäristö ei käytännössä eroa klassisesta Visual Basicista, joka on suunniteltu makrojen ja muiden sovellusohjelmien kirjoittamiseen tiettyjä yrityssovelluksia varten. Sai suurimman suosion, koska se on käytetty Microsoft Office -paketissa . Visual Basic for Applications -sovelluksen laaja käyttö yhdistettynä tietoturvaongelmiin kiinnittämisen puutteeseen on johtanut laajalle levinneisiin makroviruksiin .

Ominaisuudet:

  • Ei salli sovellusten kääntämistä suoritettaviksi EXE/DLL-tiedostoiksi
  • Yrityssovellusten käyttäminen nykyaikaisessa ympäristössä edellyttää oikeat makrosuojausasetukset VBA :ta isännöivässä sovelluksessa
  • Jotkut kohteet puuttuvat, kuten: Clipboard, App, Form, Timer, Data. Sen sijaan tarjotaan muita luokkia, jotka on toteutettu sovelluskohtaisessa objektimallissa.

Visual Basic Scripting Edition (VBScript)

Komentosarjakieli , joka on hieman katkaistu versio tavallisesta Visual Basicista. Käytetään ensisijaisesti Microsoft Windows - järjestelmien hallinnan automatisointiin sekä ASP - sivujen ja komentosarjojen luomiseen Internet Explorerille .

Ominaisuudet:

  • Tiedostojärjestelmän kanssa työskentelyyn ei ole operaattoreita
  • Ei ole mahdollista ilmoittaa muuttujaa tietyllä tietotyypillä. Kaikki muuttujat ovat tyyppisiäVariant
  • Ulkoisten kirjastojen kanssa työskentelyyn on mahdollista käyttää vain myöhäistä linkitystä
  • Ei koodin kokoamista suoritettaviksi tiedostoiksi
  • Lähdekoodi tallennetaan tekstitiedostoihin tunnisteella .vbstai.vbe

eMbedded Visual Basic (eVB)

Tätä työkalua käytetään ohjelmistojen kehittämiseen Windows CE - ja Windows Mobile - käyttöjärjestelmille . Sisältää IDE:n, debuggerin ja emulaattorin sovellusten testausta varten. eMbedded Visual Basic ei perustu täysin varusteltuun Visual Basic -ohjelmointikieleen, vaan Visual Basic Scripting Edition -skriptikieleen . Sovellukset käännetään P-koodiksi ja suoritettavilla tiedostoilla on tunniste VB, jotka liittyvät isäntäsovellukseen.

Ominaisuudet:

  • Kaikki muuttujat ovat oletusarvoisesti Variant-tyyppisiä; vahvaa kirjoittamista ei tueta
  • ActiveX-komponenttien kehitystä ei tueta, mutta voit käyttää valmiita
  • Useita sisäänrakennettuja Visual Basic -ohjaimia ei tueta, jotkut ominaisuudet puuttuvat
  • Vaatii eMbedded Visual Basic Runtime -kirjastot sovellusten suorittamiseen

Katso myös

Muistiinpanot

  1. Microsoft sanoo lopettavansa Visual Basicin kehittämisen kielenä . Haettu 18. maaliskuuta 2020. Arkistoitu alkuperäisestä 29. maaliskuuta 2020.
  2. Visual Basic -tuki suunniteltu .NET 5.0:lle . Haettu 18. maaliskuuta 2020. Arkistoitu alkuperäisestä 5. tammikuuta 2022.
  3. https://msdn.microsoft.com/en-us/library/aa242751(v=vs.60).aspx Arkistoitu 22. joulukuuta 2015 Wayback Machine MSDN:lle, Visual Basic 6.0, Language Reference ja operaattori
  4. V. Sergeev. Visual Basic 6.0. Täydellisin opas ammattityöhön Visual Basic -ympäristössä. S. 493.
  5. https://support.microsoft.com/en-us/kb/229415 Arkistoitu 6. maaliskuuta 2016 Wayback Machinessa Visual Basic tukee P-koodin ja alkuperäisen koodin kääntämistä.
  6. Ohjattu paketointi- ja käyttöönottotoiminto . Visuaaliset peruskäsitteet. Visual Studio 6.0  (englanniksi) . MSDN . Microsoft . Haettu 29. huhtikuuta 2017. Arkistoitu alkuperäisestä 22. marraskuuta 2016.
  7. https://support.microsoft.com/en-us/kb/161137 Suunnittelun ja binaariyhteensopivuuden käyttäminen
  8. 16-bittiset versiot voivat käyttää Win16-alijärjestelmää, kun taas 32-bittiset versiot voivat käyttää Win32:ta.
  9. Toteutuksen periytymisen puute on COM -tekniikan ominaisuus , ei itse VB:tä, mikä heijastaa vain tätä ominaisuutta.

Suositeltu lukema

  • Maureen Williams Zimmerman. Microsoft Visual Basic 6.0 -viitekirjasto . - Redmond, WA, USA: Microsoft Press, 1998. - 3344 s. — ISBN 1-57231-864-3 .
  • Microsoftin virallinen akateemisen kurssin henkilökunta. Microsoft Visual Basic 6.0: Ohjelmoijan opas . - Redmond, WA, USA: Microsoft Press, 1998. - 976 s. — ISBN 1-57231-863-5 .
  • John Clark Craig, Jeff Webb. Microsoft Visual Basic 6.0. Kehittäjän työpaja. - "Venäläinen painos", 2001. - 720 s. — ISBN 1-57231-883-X .
  • Dan Appleman. Win32 API ja Visual Basic. Ammattilainen = Dan Applemanin Visual Basic -ohjelmoijan opas Win32 API:lle. - Pietari. : "Peter" , 2001. - 1120 s. — ISBN 5-272-00198-2 .
  • James Cooper. Visual Basic -suunnittelumallit: VB 6.0 ja VB.NET . - Addison Wesley, 2002. - 484 s. — ISBN 0-201-70265-7 .
  • Sergeev V. Visual Basic 6.0. Opas ammattilaisille. - Pietari. : "BHV-Petersburg", 2004. - 974 s. - ISBN 5-8206-0019-3 .
  • Brian Siler, Jeff Spotts. Visual Basic 6. Classic Edition = Special Edition Visual Basicin käyttö 6. - M . : "Williams", 2007. - 832 s. — ISBN 0-7897-1542-2 .