Visual Basic

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 22 mars 2021; kontroller kräver 14 redigeringar .
Visual Basic
Språkklass Procedurell , Objektorienterad , Komponentorienterad , Händelseorienterad
Utförandetyp Sammanställt , tolkat
Framträdde i 1991
Utvecklaren Microsoft
Filtillägg _ .bas, .cls, .frm, .vbp, .vbg
Släpp Visual Basic 6.0 (1998 ) ( 1998 )
Typ system Statisk typning , Stark typning , Dynamisk typning
Stora implementeringar Microsoft Visual Studio
Dialekter Visual Basic för applikationer , Visual Basic-skript
Blivit påverkad QuickBasic , BASIC
påverkas Visual Basic .NET , REALbasic , Gambas , Xojo , Basic4ppc
Hemsida msdn.microsoft.com/ru-RU/vstudio/ms788229.aspx
 Mediafiler på Wikimedia Commons

Microsoft Visual Basic  är ett programmeringsspråk och en integrerad mjukvaruutvecklingsmiljö utvecklad av Microsoft Corporation . Visual Basic-språket ärvde andan, stilen och delvis syntaxen från sin förfader, BASIC-språket , som har många dialekter. Samtidigt kombinerar Visual Basic procedurer och delar av objektorienterade och komponentorienterade programmeringsspråk. VB IDE innehåller verktyg för visuell design av användargränssnitt, en kodredigerare med IntelliSense och syntaxmarkering och verktyg för att felsöka applikationer.

Visual Basic är också ett bra verktyg för snabb utveckling (RAD) av databasapplikationer för operativsystem i Microsoft Windows- familjen . Många färdiga komponenter som levereras med miljön är designade för att hjälpa programmeraren omedelbart att börja utveckla affärslogiken för en affärsapplikation, utan att avleda hans uppmärksamhet till att skriva kod för att starta programmet, prenumerera på händelser och andra mekanismer som VB implementerar automatiskt.

Visual Basic erkändes först av seriösa utvecklare efter lanseringen av version 3. Det slutliga erkännandet som ett fullfjädrat programmeringsverktyg för Windows kom med releasen av version 5. Version VB6, som är en del av Microsoft Visual Studio 6.0, har blivit en verkligt mogen och funktionsrik produkt.

Utvecklingshistorik

Utgivningsdatum Version Beskrivning
maj 1991 1.0 Visual Basic 1.0 för Microsoft Windows . QBasic- syntaxen togs som grunden för språket , och innovationen, som sedan gjorde stor popularitet för språket, var principen för kommunikation mellan språket och det grafiska gränssnittet. Denna princip utvecklades av Alan Cooper ( Alan Cooper ) och implementerades i prototypen Tripod (även känd som Ruby )
september 1992 1.0 Visual Basic 1.0 under DOS . Det var inte helt kompatibelt med Windows-versionen av VB, eftersom det var nästa version av QuickBASIC och kördes i skärmtextläge. Det är intressant att notera att paketet inkluderade ett speciellt verktyg som konverterade projekt av denna version till Visual Basic 1.0-projekt för Windows. Hon gjorde koden så kompatibel som möjligt med Windows-versionen, konverterade formulären (även om resultatet var otillfredsställande på grund av skillnaderna i text- och grafikläge) och gav även kommentarer i koden med tips för ytterligare förbättringar.
november 1992 2.0 Visual Basic 2.0. Utvecklingsmiljön blev lättare att använda och fungerade snabbare. Fönstret Egenskaper har flyttats till en separat lista. Lade till källkodsmarkering .
1993 3.0 Visual Basic 3.0 släpptes i Standard- och Professional-utgåvor. Dessutom har en motor för att arbeta med Access-databaser lagts till i paketet .
augusti 1995 4.0 Visual Basic 4.0 var en version som kunde skapa både 32-bitars och 16-bitars Windows-applikationer. Dessutom blev det möjligt att skriva klasser i VB, och Visual Basic blev äntligen en fullfjädrad kompilator , vilket avsevärt ökade hastigheten på programexekveringen. Lade till stöd för OLE Controls (OCX), ersätter de gamla VBX-kontrollerna
februari 1997 5.0 Visual Basic 5.0 - från och med den här versionen blev det möjligt, tillsammans med konventionella applikationer, att utveckla dina egna COM-komponenter . Genom att kompilera en sådan komponent i en OCX-fil och leverera den var det möjligt att tillhandahålla dess kontrollobjekt inte bara till slutanvändaren utan även till andra utvecklare, varefter de kunde integrera detta objekt i sina applikationer. Den integrerade miljön inkluderar P-Code och Native kompilatorer. Applikationer exekveras av en ny virtuell maskin implementerad i det dynamiska biblioteket MSVBVM50.DLL. Även under det första kvartalet i år släpper Microsoft en produkt i en specialutgåva av Visual Basic 5 Control Creation Edition (VB5CCE), som enbart specialiserar sig på design av ActiveX- kontroller.
Mitten av 1998 6,0 Visual Basic 6.0  - Optimerad virtuell maskindrift och flyttad till MSVBVM60.dll. Förbättrad Native-kompilatorprestanda. Lade till nya funktioner för att arbeta med strängar och arrayer. Denna version av språket är den senaste i raden av klassisk VB. Microsoft ändrade språkpolicyn för Basic-familjen och istället för att utveckla Visual Basic skapades ett helt nytt språk, Visual Basic .NET .
2002 7,0 Första utgåvan av Visual Basic .NET . Den viktigaste funktionen är att koden hanteras helt av .NET Framework Common Language Runtime . Trasig bakåtkompatibilitet med klassisk Visual Basic (fryst som VB6).
april 2003 7.1 Microsoft har uppgraderat Visual Basic .NET, optimerat kompilatorn. Släppt med den uppdaterade versionen av .NET Framework 1.1.
2005 8,0 Ingår i Visual Studio 2005 . Kräver .NET Framework 2.0. Efter lanseringen av Visual Basic .NET 2003 släppte Microsoft prefixet ".NET" från produktnamnet och nästa version heter Visual Basic 2005.
2008 9,0 Ingår i Visual Studio 2008 . Kräver .NET Framework 3.5
2010 10,0 Ingår i Visual Studio 2010 . Kräver .NET Framework 4
2012 11.0 Ingår i Visual Studio 2012 . Kräver .NET Framework 4.5
2013 12,0 Ingår i Visual Studio 2013 . Kräver .NET Framework 4.5.1
2015 14.0 (inte släppt som 13.0) Ingår i Visual Studio 2015 . Uppdaterade .NET Framework till version 4.6
2017 15,0 Ingår i Visual Studio 2017 .

Efter lanseringen av Visual Basic version 6.0 ändrade utvecklare från Microsoft avsevärt riktningen för utvecklingen av denna teknik. Visual Basic .NET tillåter dig inte att programmera på det gamla sättet, eftersom det faktiskt är ett helt annat språk, samma som alla andra programmeringsspråk för .NET- plattformen . Språkets individualitet, såväl som dess fördelar (enkelhet, snabbhet att skapa program, användarvänlighet för färdiga komponenter), när de används i .NET-miljön, är inte lika viktiga som tidigare - allt är fokuserat på funktionerna av själva .NET-plattformen, på dess klassbibliotek. För tillfället (juni 2015) behöver vi prata om Visual Basic, som om de klassiska versionerna av språket 4.0 - 6.0, dess dialekter: Visual Basic for Applications (VBA) och Visual Basic Scripting Edition (VBScript) och språket för .NET-plattformen - Visual Basic .NET

I mars 2020 uppgav Microsoft att de skulle stödja Visual Basic i .NET 5.0 Unified Platform, men att de inte längre skulle lägga till nya funktioner eller utveckla språket [1] [2] .

Element av språk

Datatyper

Variabler i Visual Basic deklareras med en operator Dim, följt av namnet, sedan nyckelordet Asoch sedan typen av variabel. Om typen utelämnas Asanges inte nyckelordet och variabeln deklareras som Variant. Om du inte anger en konstruktion Option Expliciti deklarationsavsnittet krävs ingen explicit deklaration av variabler och de kommer automatiskt att skapas vid första användningen. Detta beteende kan leda till en minskning av programexekveringshastigheten, eftersom odeklarerade variabler kommer att vara av typen Variant, samt logiska fel associerade med felaktig inmatning av namnet på en befintlig variabel eller risken för konflikter i applikationen när omfattningen av variabeln är inte helt klart.

Dim strMessage As String 'deklaration av en variabel av teckentyp Dim iProductCount As Integer 'deklaration av en variabel av heltalstyp Dim dt70YearsOfVictory As Date 'deklaration av en variabel för lagring av datum och tid Dim otherValue ' typ inte specificerad, variabel av typen Variant Public Sub Main () strMessage = "Hej värld!" iProductCount = 125 dt70YearsOfVictory = # 5 / 9 / 2015 14:00:00 # ' datum 9 maj 2015 14:00:00 otherValue = 12,5 ' variabeltyp Variant, subtyp Dubbel. otherValue = "Wikipedia" ' variabeltyp Variant, undertyp String. slut sub

Visual Basic 6.0 Basic Types Tabell

namn Typstorlek Datatyp Beskrivning
bytes 1 byte Byte. Designad för att lagra heltal från 0 till 255. Om en variabel av denna typ tilldelas ett värde som överskrider dessa gränser, kommer Visual Basic att generera ett körtidsfel.
Heltal 2 byte Hela. Designad för att lagra heltal i intervallet − 32 768 till 32 767 . Suffix för typbeteckning "%".
Lång 4 bytes långt heltal. Designad för att lagra heltal i intervallet − 2 147 483 648 till 2 147 483 647 . Suffix för typbeteckning "&".
Enda 4 bytes Flytpunkt med enkel precision. Område - 3,402823E38 till - 1,401298E−45 för negativa värden; 1.401298E −45 till 3.402823E38 för positiva värden. Suffixet för typbeteckning "!"
Dubbel 8 byte Flytpunkt med dubbel precision. Variabler av denna typ låter dig lagra nummer upp till 16 siffror och upp till 300 tecken långa. Värdeintervallet varierar från -1,80E+308 till 1,80E+308. Suffixet är "#". Beräkningar med det är ungefärliga, eftersom den binära representationen av talet används enligt IEEE 754- standarden .
Decimal 16 byte Skalat heltal. Denna typ använder decimalrepresentation av tal. Beräkningar med den, såväl som med valutatypen, är exakta. Värdeintervallet är från -7,92E+28 till 7,92E+28. Du kan inte direkt deklarera en variabel av typen Decimal. Den kan bara användas som en undertyp av en variant, och en variabel kan castas till den typen med hjälp av cast-funktionen CDec.
Boolean 2 byte Den booleska datatypen kan bara lagra två värden: True eller False, true eller false. Ett sant värde i VB motsvarar ett heltal −1, och ett falskt värde är lika med 0, och med implicit typgjutning behandlas alla andra numeriska värden än noll som sant. Detta beteende gör det möjligt att använda de logiska operatorerna AND, OR, NOT, XORinte bara för boolesk algebra, utan också för bitvisa operationer. [3]
Sträng 10 + 2*N byte Snöre med variabel längd. Designad för att lagra stränginformation (tecken). Strängen i sig lagras i Unicode -kodning , så varje tecken kodas med 2 byte. Om du tittar på typen från insidan, så används ytterligare 4 byte för att lagra en pekare till strängen, 4 byte för storleken på strängen, och själva strängen avslutas med nolltecken (ytterligare 2 byte). Den maximala radstorleken kan alltså vara upp till 2 GB. Suffix som "$".
Sträng*N 2*N byte En sträng med konstant längd. Precis som String-typen lagrar den teckendata, förutom att storleken på data är fast och specificeras när variabeln deklareras. Om strängvärdet är för stort, trunkeras det till önskad storlek. Om strängen är mindre än vad som krävs, utjämnas storleken genom att lägga till ett blanksteg. Det bör noteras att fasta strängar och arrayer, såväl som strukturer, inte kan vara större än 64 kb.
Datum 8 byte Datatypen låter dig lagra tid- och datumvärden mellan midnatt, 1 januari 100 och midnatt, 31 december 9999. Om endast ett datumvärde tilldelas en variabel är klockan 00:00. En heltalsenhet representerar en dag. Detta låter dig lägga till och subtrahera datum med endast matematiska operatorer, men VB tillhandahåller specialiserade datumfunktioner för att åstadkomma detta.
Objekt 4 bytes Används för att lagra en referens till ett objekt. Tilldelning till en variabel för denna typ görs med hjälp av Set. Själva typen är analog med IDispatch, den lagrar en referens till IDispatch-gränssnittet. För alla objekt måste du använda IUnknown.
Valuta 8 byte Monetär. Denna typ kan ha upp till 4 siffror efter decimalkomma och upp till 14 före den. Värdena är decimaltal, inte binära, vilket är fallet för flyttalstyper med enkel och dubbel precision. Således kommer beräkningarna att göras korrekt. Värdeintervallet är −922337203685477.6000 till 922337203685477.6000 . Denna typ är att föredra för ekonomiska beräkningar. Suffix "@"
Variant 16 byte / 22 byte+N byte / N-byte En variabel av typen Variant kan innehålla data av vilken typ som helst, inklusive objektreferenser, användardefinierade typer och arrayer. Visual Basic utför automatiskt nödvändiga datatransformationer . En undertyp som innehåller ett nummer kräver 16 byte minne, och för att lagra strängdata 22 byte + längden på själva strängen. Värdeintervallet är lika med värdeintervallet för undertypen. Denna typ är den långsammaste när det gäller körhastighet, eftersom det tar tid att packa upp och packa värden.

Operatörer

Visual Basic-språket innehåller många operatorer som är ansvariga för aritmetiska operationer, jämförelse- och tilldelningsoperationer och sammanlänkning .

uppdragsoperatör

  • Likhetstecknet (=) används för att tilldela ett värde till en variabel. Det är också möjligt att använda nyckelordet Letföre variabelnamnet. I tidiga versioner av BASIC-språket krävdes det, men i Visual Basic lämnas det för kompatibilitet. För att tilldela en objekttyp till en variabel krävs närvaron av nyckelordet Set. Exempel: nVar = 10, Let iCount = 20, Set refDouble = objClass.

Flera tilldelningar, som implementerade i C, är inte möjliga. A = B = Cbetyder inte att A, Boch Ckommer att ha samma värden. VB kommer att utvärdera uttrycket och tilldela resultatet B = Ctill variabeln , eller , 0 eller −1, beroende på typen. ATrueFalse

Aritmetiska operatorer

  • addition (+), subtraktion (-), multiplikation (*), division (/)
  • exponentiering (^). Exempel:2 ^ 3 = 8
  • heltalsdivision (\). Delar det första talet med det andra, kasserar (inte avrundar) bråkdelen. Exempel:5 \ 2 = 2
  • modulo division (Mod). Dividerar det första talet med det andra, och returnerar endast resten av divisionen. Exempel:5 Mod 2 = 1

Jämförelseoperatörer

  • jämlikhet (=). Exempel:If nVar = 10 Then
  • större än och mindre än (> och <). Exempel:If nVar > 10 Then
  • större än eller lika med och mindre än eller lika med (>= och <=). Exempel:If nVar >= 10 Then
  • inte lika (<>). Exempel:If nVar <> 10 Then
  • jämförelse av objekt (Is). Bestämmer om objektvariabler refererar till samma objekt eller till olika. Exempel:If obj1 Is obj2 Then
  • likhetsoperator (Gilla). Jämför ett strängobjekt med ett mönster och avgör om mönstret matchar. Exempel:If strEmail Like "*@*.*" Then

Logiska operatorer

  • logiskt OCH (Och) - Båda delarna av uttrycket måste vara sant för att hela uttrycket ska bli sant. Exempel:If (2 * 2 = 4) And (2 * 3 = 6) Then
  • logiskt ELLER (Eller) - minst ett av uttrycken måste vara sant. Exempel:If (2 * 2 = 5) Or (2 * 2 = 4) Then
  • logisk negation (Not) - returnerar Trueom villkoret är falskt och vice versa. Exempel:If Not(2 * 2 = 5) Then
  • logiskt undantag (Xor) - i uttrycket E1 Xor E2returnerar Trueom endast E1 = Trueeller bara E2 = True, annars - False.
  • Ekvivalens (Ekvivalens) − Utvärderar ekvivalensen för två uttryck, returnerar Trueom de har samma värde.
  • implikation (Imp) — returnerar Falseom E1 = Trueoch E2 = False, annars — True.

Sammankopplingsoperatörer

  • Operatorn (+) används för att sammanfoga strängar. Om båda delarna av uttrycket är av teckentyp, kommer strängsammansättningen att lyckas. Om en av delarna av uttrycket har en numerisk typ, men den andra delen inte kan korrekt konverteras till ett tal, uppstår ett typkastningsfel. För att undvika sådana situationer rekommenderar vi att du använder lämpliga operatorer för typkonvertering eller använder operatorn (&) för att sammanfoga strängar.
  • Operatorn (&) konverterar automatiskt uttryck och värden till en strängtyp. Till exempel str = "10" & 20ger uttrycket resultatet "1020", inte "30". Om vi ​​använde operatorn (+) i det här uttrycket, skulle VB gjuta uttrycket "10" till den numeriska typen 10, och om det lyckades, skulle det utföra aritmetisk addition.

Kontrollstrukturer

I Visual Basic, som i många programmeringsspråk, finns det konstruktioner som styr i vilken ordning åtgärder utförs. Vissa av konstruktionerna, som GoSuboch Return, behålls för kompatibilitet med tidigare versioner av BASIC-språket, men implementering som separata procedurer kan ge mer strukturerad kod.

Filialoperatör

Allmän syntax:

'Skriv en grensats på en rad If < condition > Then [ action_when_condition_is_true ] 'Den här posten låter dig utföra åtgärder beroende på sanningen i villkoret If < condition > Then [ action_when_condition_is true ] Else [ action_when_condition_false ] 'Skriv en grensats med flera rader If < condition > Then [ action_when_condition_is true ] ElseIf < condition2 > Then [ action_when_condition2_true ] ElseIf < conditionN > Then [ action_when_conditionN_true ] Else [ action_when_condition_false ] End If Urvalsoperator

Allmän syntax:

Välj Fall < value_tested > 'Variabel eller uttryck som ska testas mot ett eller flera villkor Fall < value_1 > 'Åtgärd utförs om värdet som testas matchar värde 1 [ action_1 ] Fall < värde_2 > , < värde_3 > , < värde_3 > 'Tester värdelista. Om en matchning hittas, utförs åtgärden [ action_2 ] Fall < value_5 > To < value_6 > 'Kontrollerar värdeintervallet [ action_3 ] Case Is >= < value_7 > 'Kontrollerar värdet för sanning med villkoret [ action_4 ] Case Else 'Åtgärden utförs om inget av villkoren misslyckas [ action_5 ] End Select

Exempel: visa olika meddelanden beroende på värdet på en variabel

'Låt oss ange en variabel och ge den ett värde manuellt Dim X As Double X = InputBox ( "Ange det numeriska värdet för variabel X" ) Välj Case X 'Kontrollera om vårt värde passar någon imaginär funktion Case är < 5 , Är >= 20 , 12 Till 15 'Omfång av giltiga värden MsgBox "Ett giltigt värde för någon funktion" Case Else 'Ogiltiga värden MsgBox " Värdet kan inte användas i vissa funktioner" End Select Slinga med räknare

Allmän syntax:

För < variabel > = < värde > Till < slutvärde > [ Steg < steg_värde >] [ statement_block ] [ Exit For ] ' Exit loop Next [ variabel ]

Exempel: beräkna summan av jämna tal från 1 till 100

För I = 0 Till 100 Steg 2 Summa = Summa + I Nästa Gemensam cykel

Allmän syntax:

För varje < variabel > I < samling > [ statement_block ] [ Exit For ] ' Force exit loop Next [ variabel ]

Exempel: Visar varje element i en array

Dim strItem som variant För varje strItem I Array ( "Apple" , "Pear" , "Plum" ) Skriv ut strItem Nästa Villkorlig loop

Allmän syntax:

Do While < condition > 'Slingan exekveras när villkoret är sant [ statement_block ] [ Exit Do ] 'Tvingad utgång från slingan Gör tills < villkor > 'Slingan exekveras när villkoret är falskt [ statement_block ] [ Exit Do ] Loop While < condition > 'Slingan exekveras när villkoret är sant [ statement_block ] Wend

Exempel: Läsa en textfil rad för rad

Öppna "file.txt" för inmatning som # 1 Do While Not EOF ( 1 ) 'Return True om slutet av filen förväntas Rad Input # 1 , strBuffer 'Läs rad i Debug variabel . Skriv ut strBuffer 'Utmatning till felsökningsfönster Loop Close # 1 Slinga med postcondition

Allmän syntax:

Gör [ statement_block ] [ Exit Do ] Loop medan < condition > Gör [ statement block ] [ Exit Do ] Loop Tills < condition >

Procedurer och funktioner

Subrutiner är en av grundelementen i språket. De är procedurer och funktioner.

  • Proceduren börjar med en operatör Suboch slutar med End Sub, mellan vilken koden placeras. Procedurer kan anropas antingen av Visual Basic själv, till exempel implementerade som händelsehanterare, eller av andra procedurer och funktioner. Namnet på händelseproceduren består av namnet på objektet, understrecket och namnet på händelsen:
Private Sub Command1_Click () 'Händelsen kommer att aktiveras när knappkontrollen klickas ... Avsluta Sub Privat Sub Form_MouseMove ( knapp som heltal , Skift som heltal , X som singel , Y som singel ) 'Anropas när muspekaren rör sig i formulärfönstret ... End Sub

Visual Basic implementerar faktiskt Windows-meddelandeslingan. I formulärexemplet kommer slingan att filtrera meddelandet WM_MOUSEMOVEoch automatiskt anropa proceduren Form_MouseMovemed parametrarna: vilka musknappar som trycktes ner, pekarkoordinater. Denna mekanism döljer vissa aspekter av programmering i Windows-miljön för utvecklaren, vilket gör att han omedelbart kan börja skriva kommersiell kod. I de flesta fall kommer den klass av uppgifter som ska lösas inte att kräva att programmeraren känner till meddelanden och fönsterfunktioner. Men Visual Basic hindrar inte programmeraren från att implementera hantering av fönstermeddelanden. Detta möjliggör ett mycket flexibelt tillvägagångssätt för att bygga applikationer, men det kräver också tillräcklig erfarenhet för att skriva sådan kod, vilket kan göra att programmet körs instabilt upp till en krasch.

  • Funktioner i VB börjar med ett nyckelord Functionoch slutar med End Function. Funktionens returvärde tilldelas en variabel som matchar funktionens namn. För att i förtid avbryta utförandet av en procedur eller funktion finns det speciella operatörer Exit Suboch Exit Function. Visual Basic 6.0 innehåller inbyggda funktioner för att arbeta med filsystemet, datum och tid, matematiska funktioner, funktioner för att interagera med systemet, funktioner för att arbeta med strängar, funktioner för gjutning av typer och funktioner för ekonomiska beräkningar. Det finns också odokumenterade funktioner som gör att du kan arbeta till exempel med pekare.

Ett exempel på en funktion för att lösa en andragradsekvation:

Privat Sub Main () Dim RetX1 As Double , RetX2 As Double Dim strStatus As String strStatus = SolveQuadraticEquation ( 4 , 6 , 2 , RetX1 , RetX2 ) 'Lös ekvationen 4*X^2 + 6*X - 2 = 0 'Visa svar MsgBox "Upplösning: " & strStatus & vbCrLf & _ "X1 = " & RetX1 & vbCrLf & _ "X2 = " & RetX2 , vbInformation End Sub ' Andragradsekvation Lös Funktion Offentlig funktion Lös Kvadratekvation ( ByVal A As Double , _ ByVal B As Double , _ ByVal C As Double , _ ByRef X1 As Double , _ ByRef X2 As Double ) As String Dim D As Double D = ( B * B ) - ( 4 * A * C ) 'Få värdet av diskriminanten Om D >= 0 X1 = ( - B - Sqr ( D )) / ( 2 * A ) ' Beräkna rötterna till ekvationen X2 = ( - B + Sqr ( D )) / ( 2 * A ) SolveQuadraticEquation = "Lösning hittad" 'Funktionen returnerar ett meddelande om lösningen Else SolveQuadraticEquation = "Diskriminant < 0. Inga rötter" End If End -funktion

I det här exemplet kan du se modifieraren framför ByValargumenten A, Boch C. Detta säkerställer att parametrarna till funktionen kommer att skickas med värde . Modifieraren ByRef, å andra sidan, skickar värdet genom referens . För denna typ av modifierare kan funktionen modifiera värdena för variabler som skickas som parametrar. Visual Basic skickar som standard alltid värden genom referens om ingen av modifierarna angavs.

Moduler och klasser

Programkod i Visual Basic lagras i moduler. Det finns bara tre typer av moduler: formulärmodul (Form), standardmodul (Module) och klassmodul (Klassmodul).

  • Formulärmodulen (filtillägget *.frm) är grunden för de flesta Visual Basic-applikationer. Formulärmodulen innehåller händelsehanteringsprocedurer, allmänna procedurer och de som deklareras på formulärnivå: variabler, konstanter, typer och externa procedurer. Om du öppnar formulärmodulen i en textredigerare kan du se beskrivningar av formuläret och dess kontroller, inklusive deras egenskaper. Kod placerad i en formulärmodul kan referera till andra formulär eller applikationsobjekt.
  • En standardmodul (filtillägget *.bas) är en behållare för procedurer, funktioner och deklarationer som vanligtvis nås av andra applikationsmoduler. De kan innehålla en global variabel (tillgänglig för hela applikationen) eller deklareras på modulnivå: variabler, konstanter, typer, externa och globala procedurer. Kod placerad i en standardmodul kanske inte är relaterad till en viss applikation; om du inte använder formulärmodulreferenser eller kontrollnamn kan standardmodulen användas i andra applikationer.
  • Klassmodulen (filtillägget *.cls) är grunden för objektorienterad programmering i Visual Basic. Klassmodulen används för att skapa nya objekt. Dessa objekt kan ha sina egna egenskaper, metoder och händelser. Faktum är att ett formulär bara är en klassmodul som kan innehålla kontroller placerade på den och visa dem på skärmen. Klasser kan innehålla speciella procedurer Class_Initializeoch Class_Terminate, som effektivt är konstruktör och förstörare .

Objektorienterad programmering

Enkel interaktion mellan objekt är en av grundkomponenterna i Visual Basic-paradigmet. Själva objektet kallas en instans av klassen . VB-objektmodellen tillhandahåller olika klasser för att arbeta med formulär, kontroller, urklipp, samlingar, skärmen etc. För att interagera med andra objekt ger klassen utvecklaren ett gränssnitt som består av egenskaper , metoder och händelser .

Att skapa ett nytt objekt från en klass är möjligt genom tidig eller sen bindning. För tidig bindning används nyckelordet Newföre klassnamnet. För sen bindning används en funktion CreateObjectsom returnerar en referens till det skapade objektet. Referenser tilldelas variabler av typen Objectmed hjälp av operatorn Set. Tillgång till metoder och egenskaper för en klass sker genom punktoperatorn ., som placeras omedelbart efter variabelnamnet för objekttypen. Om klassen innehåller händelser deklareras variablerna med nyckelordet WithEvents, så att händelsehanteringsprocedurerna blir tillgängliga.

Exemplet visar hur programmet interagerar med Microsoft Scripting Runtime- biblioteket , som tillhandahåller objekt för att arbeta med filsystemet:

Public Sub Main () Dim objFSO As New FileSystemObject 'Skapa en instans av klassen med hjälp av New Dim objWindows As Folder -satsen Ställ in objWindows = objFSO . GetFolder ( Environ ( "SYSTEMROOT" )) 'Anropa klassmetoden GetFolder och tilldela en referens till det resulterande objektet MsgBox "Windows-mapp: " & objWindows . Sökväg 'Läs egenskaperna för MsgBox- klassen "Datum skapat: " & Format ( objWindows . DateCreated , "ÅÅÅÅ-MM-DD H:mm:ss" ) Dim sTextFilePath As String Dim objTS As TextStream sTextFilePath = objFSO . BuildPath ( Environ ( "TEMP" ), "Test file.txt" ) 'Metod med två parametrar returnerar ett värde av typen String Ställ in objTS = objFSO . CreateTextFile ( sTextFilePath , True ) objTS . Skriv "Hej Wikipedia!" objTS . stänga objFSO . DeleteFile sTextFilePath , True Set objFSO = Ingenting 'Att tilldela ingenting släpper referensen och objektet kan anropa destruktorproceduren Set objWindows = Ingenting 'VB anropar automatiskt destruktorn när objektet inte längre refereras . Set objTS = Ingenting End Sub

Visual Basic låter utvecklaren skapa nya klasser själv. Till skillnad från andra programmeringsspråk som Java och C++ har Visual Basic inte fullt stöd för OOP.

Som ni vet behövs en abstrakt klass för att tillhandahålla en mall för ett gränssnitt till andra klasser. I Visual Basic kan klasser som har klassmedlemmar men ingen implementering användas som abstrakta klasser, men det är de faktiskt inte. Du kan alltid skapa objekt från Visual Basic-klasser, även om de inte innehåller kod [4]

Principen för inkapsling fungerar i Visual Basic. För att avgränsa åtkomst till klassmedlemmar används modifierarna Public, Privateoch Friendnär de beskriver procedurer, funktioner, konstanter, variabler och användardefinierade typer.

Implementeringsarv stöds inte. Visual Basic ger endast stöd för gränssnittsarv viaImplements. När man ärver ett gränssnitt kan vilken klass som helst fungera som gränssnittets basklass. I allmänhet kan vilken klass som helst fungera som basklass för ett gränssnitt.

Polymorfism upprätthålls endast genom gränssnitt, eftersom VB inte stöder nedärvning. Implementeringen av polymorfism visas i exemplet med bil- och flygplansklasserna som implementerar gränssnittet för transportklassen .

'Klass ITransport.cls Public Function GetMaxSpeed ​​() Som Long End - funktion 'Class CAuto.cls Implementerar ITransport 'Inherit-gränssnitt Privat funktion ITransport_GetMaxSpeed ​​() länge ' Metodimplementering ITransport_GetMaxSpeed ​​​​= 240 Slutfunktion 'Class CFly.cls implementerar ITransport Privat funktion ITransport_GetMaxSpeed ​​( ) länge ITransport_GetMaxSpeed ​​​​= 700 slutfunktion 'Standardmodul Program.bas Alternativ Explicit Public Sub Main () Dim T As ITransport 'Deklarera en variabel av typen ITransport Set T = New cAuto WhatTransportSpeed ​​​​T 'Vi skickar en referens till en procedur som kommer att anropa den önskade klassmetoden, beroende på implementeringen Set T = New cFly WhatTransportSpeed ​​​​T End Sub 'Funktionen har ett argument som tar en referens till ett objekt som implementerar ITransport-gränssnittet. Public Sub WhatTransportSpeed ​​​​( Transport As ITransport ) MsgBox "Maximum speed: " & Transport . GetMaxSpeed ​​() End Sub

Formdesigner

Kodredigerare

Kodredigeraren är en textredigerare med ytterligare funktioner för enkel och snabb inmatning av källkod:

  • Syntaxmarkering av källkod.
  • Horisontell uppdelning av fönstret i 2 paneler.
  • Visa all källkod eller en specifik procedur.
  • En uppräkning av objekt som används i programmet med en lista över händelser som utvecklaren kan hantera.
  • Automatiskt byte av bokstäver. Den första bokstaven i nyckelord är versal, skiftläge för variabelnamn ändras automatiskt för att matcha skiftläge som angavs när de deklarerades.
  • Autokomplettering av namn på funktioner, procedurer, variabler med IntelliSense .
  • Kontrollerar kod för syntaxfel.
  • Smart blocktabell _

Felsökning

Den integrerade utvecklingsmiljön ger programmeraren rika möjligheter för felsökning av program. En av fördelarna med Visual Basic är möjligheten att ändra programmets källkod i stor utsträckning utan att helt kompilera om och starta om det. Under felsökningsprocedurer ges utvecklaren möjlighet att flytta markören som indikerar den instruktion som körs för närvarande, både framåt - hoppa över en del av koden och bakåt - vilket tvingar VB att köra om instruktionerna som redan har bearbetats.

Miljön tillhandahåller bland annat felsökningsverktyg som omedelbart fönster, lokalbefolkningsfönstret, bevakningsfönstret och Call Stack Viewer . Sådana avancerade verktyg gör det möjligt för programmeraren att göra en djupgående analys av algoritmen som studeras i applikationen som felsöks.

Visual Basic går in i felsökningsläge när något av följande villkor är sant:

  • När du utför instruktionerStop
  • När du utför en instruktion som har en brytpunktsuppsättning (brytpunkt)
  • När ett fel inträffar för vilket ingen lämplig felhanterare hittas
  • Genom att trycka på snabbtangenterCtrl + Break
  • bekväm programmering

Sammanställning

Den integrerade utvecklingsmiljön kommer med en kompilator i P-Code (P-code) , en inbyggd Back-End x86-kompatibel kompilator och en länkare (länkare). Närvaron av två kompilatorer gör det möjligt att tillskriva Visual Basic till både ett kompilerat och ett tolkat språk. Oavsett vilken kompilator som väljs kräver applikationer den virtuella körningsmaskinen Visual Basic för att köras, vilket är biblioteket MSVBVMXX.DLL, där XX är språkversionen [5]

  • P-kod gör att applikationen kan köras på en hårdvaruoberoende virtuell maskin, som kommer att översätta programmets pseudokod till processorns maskinkod i realtid. Teoretiskt gör detta tillvägagångssätt det möjligt att implementera portabilitet av applikationer till nya hårdvaruplattformar utan att behöva modifiera källkoden för själva programmen. En av de främsta fördelarna med att kompilera till P-Code är den "heta" modifieringen av källkoden i felsökningsläge . Visual Basic, när den är i felsökningsläge, kompilerar alltid programmet till P-kod, sedan kan körningen avbrytas, programmeraren gör betydande ändringar i källkoden och sedan fortsätter körningen: en fullständig omkompilering och omstart av applikationen krävs inte. Kompilatorn skapar en körbar fil i PE -format , men istället för instruktioner för en riktig processor innehåller den koden som initierar den virtuella maskinen och applikationens bytekod. Den största nackdelen med att kompilera till P-kod är den låga hastigheten för programexekveringen, eftersom den mesta tiden går åt till att översätta programmet till maskinkod.
  • Native kompilering blev möjlig med lanseringen av Visual Basic 5.0. Denna kompilator låter dig skapa högpresterande kod jämfört med applikationer som har kompilerats till P-kod. De flesta instruktioner kompileras till maskinkod: aritmetiska operationer, kontrollkonstruktioner, men åtgärder som att anropa inbyggda språkfunktioner, arbeta med strängar och felhantering kommer att utföras av Visual Basic runtime-biblioteket. Således, trots att den kompileras till inbyggd kod, kommer applikationen att kräva att den virtuella Visual Basic-maskinen körs. Att ofta anropa funktioner från runtime-biblioteket leder också till en försämring av applikationskörningshastigheten. Men trots alla brister ger Native-kompilatorn en acceptabel kodexekveringshastighet. Kompilatorn innehåller flera optimeringsalternativ. På projektkompileringsfliken kan du inaktivera vissa kontrolloperationer: array out-of-bounds, heltalsspill, etc. Korrekt inställning av dessa parametrar gör att utvecklaren kan få en ytterligare prestandaökning i applikationen som utvecklas.

Implementering

Microsoft Visual Basic 6.0 kommer med paket- och distributionsguiden [6] för att skapa installationspaket baserade på ett Visual Basic-projekt. Jämfört med sin välkända föregångare, Setup Wizard, ger P&D Wizard ny funktionalitet, men tyvärr innehåller det nya verktyget några buggar. Ett av problemen med den här applikationen är ett datumkonverteringsfel om språkinställningen i användarens operativsystem skiljer sig från den amerikanska. Det finns tredjepartsprogram som tillhandahåller mer avancerade verktyg för att hantera installationspaket.

Det är också möjligt att installera VB-applikationer genom enkel kopiering, vilket kokar ner till några steg:

  • Om det inte finns någon Visual Basic-programkörningsfil (MSVBVM60.DLL) i systemkatalogen i operativsystemet måste du först kopiera den dit.
  • Om programmet innehåller icke-standardiserade kontroller, såsom ActiveX - kontroller, måste du först kopiera dem till systemkatalogen och registrera dem i Microsoft Windows-systemregistret. Registrering av komponenter kan automatiseras, till exempel genom att exekvera ett kommando regsvr32.exeoch skicka hela sökvägen till filen, eller programmässigt genom att direkt anropa metoden DllRegisterServersom implementerar den COM -kompatibla komponenten.
  • Skapa en programmapp, kopiera den körbara filen, om det behövs, skapa en programgenväg på användarens skrivbord.

Ytterligare funktioner

ActiveX (OCX-kontroller)

Från och med version VB 5.0 ges utvecklaren möjligheten att inte bara använda färdiga ActiveX -komponenter utan också att skapa sina egna. VB tar hand om allt arbete med att skapa hjälpkod som är designad för att registrera information om komponenten i systemregistret, implementera IDispatch-gränssnittet, skapa unika GUID:er som används som identifierare för klasser (CLSID), gränssnitt (IID) och typbibliotek ( LIBID). Tack vare detta tillvägagångssätt behöver programmeraren bara skapa klasser med nödvändig funktionalitet.

Skapandet av nya klass- och gränssnitts-GUID:er beror på det inställda kompatibilitetsalternativet på fliken projektegenskaper. Det kan ta ett av tre tillstånd:

  • Ingen kompatibilitet - Visual Basic genererar nya gränssnitt och klassidentifierare varje gång projektet byggs eller kompileras. Varje konstruktion av en komponent kan endast användas med applikationer som är byggda för att fungera med en specifik version av den komponenten, d.v.s. om klassen och projektnamnet inte ändras vid kompilering, kommer nya identifierare att genereras och de kommer att skriva över informationen i registret , så applikationer som hänvisar till gamla identifierare kommer inte att kunna starta.
  • Kompatibilitet på designnivå - Syftet med den här inställningen är att upprätthålla kompatibilitet under testning, så att efter att komponenten har skapats är beteendet detsamma som om inställningen ställts in utan kompatibilitet.
  • Binär kompatibilitet - När du kompilerar ett projekt skapar Visual Basic nya identifierare efter behov. Klass- och gränssnittsidentifierare från tidigare versioner av komponenten behålls. Att ändra implementeringen av en metod ändrar inte identifierarna. Att lägga till en ny klass och metoder ändrar inte det befintliga gränssnittet. Således kan gamla applikationer använda det gamla gränssnittet för komponenten, och nya applikationer kan referera till den nya versionen av gränssnittet. Om en metod ändras eller tas bort från gränssnittet kommer VB att varna om inkonsekvensen med komponentens gränssnitt och rekommendera omkompilering av applikationer. [7]

När kompileringen är klar kommer utdata att vara en binär biblioteksfil enligt COM -specifikationen . Denna komponent implementerar minst två gränssnitt : IUnknown och IDispatch. Typbiblioteket ( TLB ) kommer att integreras i resurserna för den körbara filen. Dessutom skapas filer med användbar information, såsom EXP och LIB.

Windows API (Application Programming Interface)

Visual Basic tillhandahåller språkfaciliteter för att deklarera och anropa funktioner från dynamiska länkbibliotek (DLL). Denna mekanism låter dig utöka applikationer genom att använda ytterligare bibliotek från andra utvecklare, inklusive de som är skrivna på olika programmeringsspråk. En sådan uppsättning bibliotek tillhandahålls av operativsystemet Microsoft Windows.

Den allmänna syntaxen för en funktions- och procedurdeklaration är följande:

[ Offentlig | Privat ] Deklarera Sub < procedure_name > lib "dynamic_library_name" [ Alias ​​​​"alias" ] [ ( parametrar ) ] [ Offentlig | Privat ] Deklarera Funktion < function_name > lib "dynamic_library_name" [ Alias ​​"alias" ] [ ( parametrar ) ] [ Som returtyp ]

Alias ​​måste anges i ett antal fall: användning av Visual Basic reserverade identifierare i funktionsnamnet, namnet innehåller ogiltiga tecken eller kan inte tolkas korrekt av miljön. Anropade funktioner måste stödja StdCall- anropskonventionen .

När en parameter med String-typen skickas till WINAPI-funktionen konverterar VB automatiskt kodningen från Unicode till ANSI, efter att funktionen exekveras sker den omvända konverteringen från ANSI till Unicode. För att förhindra automatisk strängkonvertering måste funktionsargumenten deklareras som långa och en pekare till en sträng måste skickas med funktionen StrPtr, så att prestandan för en applikation som gör flera funktionsanrop kan optimeras.

Ett exempel på att anropa Windows API för att få den fullständiga sökvägen till Windows-katalogen och visa ett meddelande på skärmen:

Private Declare - funktion GetWindowsDirectory Lib "kernel32.dll" Alias ​​"GetWindowsDirectoryA" ( ByVal buffer As String , ByVal nSize As Long ) As Long Private Declare - funktion MessageBox Lib "user32.dll" Alias ​​"MessageBoxA " ( ByVal hWnd As , ByVal lpText As String , ByVal lpCaption As String , ByVal wType As Long ) As Long Private Const MB_ICONASTERISK länge = 64 Public Sub Main () Dim buffer As String 'Variabeln i vilken resultatet av funktionen kommer att tas emot. Dim ret Len As Long buffer = String ( 256 , vbNullChar ) lins = GetWindowsDirectory ( buffert , Len ( buffert )) ' Funktionsanrop buffert = Vänster ( buffert , lins ) MessageBox 0 & , "OS installerat i katalogen: " & buffert , "Information" , MB_ICONASTERISK ' Avsluta subfunktionsanrop

Det bör noteras att anrop av WINAPI-funktioner är associerat med vissa interna överenskommelser, nämligen hur funktionen kommer att returnera ett resultat, vilka strukturer den behöver passera, antalet argument och deras typer, som kommer att finnas i returvärdet. Utvecklare använder den tekniska dokumentationen som medföljer biblioteken de arbetar med för att korrekt deklarera funktioner och strukturer.

Fördelar och nackdelar

Fördelar

  • Höghastighetsskapande av applikationer med ett grafiskt gränssnitt för Microsoft Windows .
  • Språkets enkla syntax ger en låg inträdesbarriär.
  • Förmåga att kompilera både till maskinkod och till P-kod (efter val av programmerare).
  • Typsäkerhet ger skydd mot fel relaterade till användning av pekare och minnesåtkomst. Denna aspekt gör Visual Basic-applikationer mer stabila, men är också föremål för kritik.
  • Möjlighet att använda de flesta WinAPI- funktioner [8] för att utöka applikationens funktionalitet. Det här problemet har utforskats mest av Dan Appleman , som skrev boken "Visual Basic Programmer's Guide to the Win32 API".

Nackdelar

  • Stöd endast för operativsystem i Windows- och Mac OS X -familjerna (Undantag - VB1 för DOS ).
  • Avsaknaden av en fullfjädrad mekanism för att ärva implementeringen av objekt [9] . Det arv som finns i språket gör att du bara kan ärva gränssnitt , men inte deras implementering.
  • Nästan alla inbyggda språkfunktioner implementeras genom runtime-biblioteket , som i sin tur gör mycket "extra" arbete med typkontroll och/eller typkonvertering, vilket saktar ner hastigheten på applikationer.

Språket är starkt knutet till sin utvecklingsmiljö och till operativsystemet Microsoft Windows, som uteslutande är ett verktyg för att skriva Windows-applikationer. Bindningen till miljön ligger i det faktum att det finns ett stort antal verktyg utformade för att hjälpa och underlätta programmering: en inbyggd debugger, visning av variabler och datastrukturer i farten, ett felsökningsfönster, verktygstips när du skriver ett program ( IntelliSense ). Alla dessa fördelar gör det värdelöst och till och med omöjligt att använda Visual Basic utanför utvecklingsmiljön, till exempel i en vanlig textredigerare.

Kritik

  • Ofta kritiseras sådana aspekter av Visual Basic som förmågan att inaktivera sättet att spåra deklarerade variabler , förmågan att implicit konvertera variabler , närvaron av datatypen "Variant". Enligt kritiker gör detta det möjligt att skriva extremt dålig kod . Å andra sidan kan detta ses som ett plus, eftersom VB inte lägger på "bra stil", utan ger mer frihet till programmeraren .
  • Brist på pekare , låg minnesåtkomst, ASM - inlägg, oförmåga att exportera funktioner i inhemska bibliotek, brist på standardverktyg för konsolapplikationsutveckling. Även om Visual Basic -paradigmet tillåter den genomsnittliga VB- programmeraren att klara sig utan allt detta, kritiseras dessa saker också ofta. Och även om, med hjälp av odokumenterade funktioner och vissa trick, kan allt detta implementeras i VB (till exempel genom att använda funktioner för att erhålla pekare och VarPtr) ; att använda dessa trick är ibland svårare än till exempel i C++ .StrPtrObjPtr

Det är dock värt att notera att alla brister i språket härrör från dess främsta fördel - enkelheten att utveckla ett grafiskt gränssnitt. Därför använder många programmerare Visual Basic för att utveckla användargränssnittet, och programfunktionaliteten implementeras som dynamiska länkbibliotek ( DLL ) skrivna på andra språk (till exempel C++ ).

Implementationer och dialekter

Visual Basic for Applications (VBA)

Denna utvecklingsmiljö skiljer sig praktiskt taget inte från den klassiska Visual Basic, som är designad för att skriva makron och andra applikationsprogram för specifika affärsapplikationer. Fick störst popularitet på grund av dess användning i Microsoft Office -paketet . Den utbredda användningen av Visual Basic for Applications, tillsammans med en initial brist på uppmärksamhet på säkerhetsfrågor, har lett till utbredda makrovirus .

Egenheter:

  • Tillåter inte kompilering av program till EXE/DLL körbara filer
  • Att köra affärsapplikationer i en modern miljö kräver korrekta makrosäkerhetsinställningar i applikationen som är värd för VBA
  • Vissa objekt saknas, till exempel: Clipboard, App, Form, Timer, Data. Istället tillhandahålls andra klasser som är implementerade i den applikationsspecifika objektmodellen.

Visual Basic Scripting Edition (VBScript)

Skriptspråk , som är en något trunkerad version av den vanliga Visual Basic. Används främst för att automatisera administrationen av Microsoft Windows-system och för att skapa ASP- sidor och skript för Internet Explorer .

Egenheter:

  • Det finns inga operatorer för att arbeta med filsystemet
  • Det finns inget sätt att deklarera en variabel med en specifik datatyp. Alla variabler är av typVariant
  • Det är möjligt att endast använda sen länkning för att arbeta med externa bibliotek
  • Ingen kompilering av kod till körbara filer
  • Källkoden lagras i textfiler med tillägget .vbseller.vbe

eMbedded Visual Basic (eVB)

Detta verktyg används för att utveckla programvara för Windows CE och Windows Mobile operativsystem . Inkluderar IDE, debugger och emulator för applikationstestning. eMbedded Visual Basic är inte baserat på det fullfjädrade programmeringsspråket Visual Basic, utan på skriptspråket Visual Basic Scripting Edition . Applikationer kompileras till P-kod och körbara filer har tillägget VB, som är associerade med värdapplikationen.

Egenheter:

  • Alla variabler är som standard av typen Variant; stark skrivning stöds inte
  • Utveckling av ActiveX-kontroller stöds inte, men du kan använda färdiga
  • Ett antal inbyggda Visual Basic-kontroller stöds inte, vissa egenskaper saknas
  • Kräver inbyggda Visual Basic Runtime-bibliotek för att köra applikationer

Se även

Anteckningar

  1. Microsoft säger att de kommer att sluta utveckla Visual Basic som språk . Hämtad 18 mars 2020. Arkiverad från originalet 29 mars 2020.
  2. Visual Basic-stöd planeras för .NET 5.0 . Hämtad 18 mars 2020. Arkiverad från originalet 5 januari 2022.
  3. https://msdn.microsoft.com/en-us/library/aa242751(v=vs.60).aspx Arkiverad 22 december 2015 på Wayback Machine MSDN, Visual Basic 6.0, Language Reference, And operator
  4. V. Sergeev. Visual Basic 6.0. Den mest kompletta guiden för professionellt arbete i Visual Basic-miljön. S. 493.
  5. https://support.microsoft.com/en-us/kb/229415 Arkiverad 6 mars 2016 på Wayback Machine Visual Basic stöder P-Code och Native Code Compilation.
  6. Paket- och distributionsguiden . Visual Basic Concepts. Visual Studio 6.0  (engelska) . MSDN . Microsoft . Hämtad 29 april 2017. Arkiverad från originalet 22 november 2016.
  7. https://support.microsoft.com/en-us/kb/161137 Använda design och binär kompatibilitet
  8. 16-bitarsversioner kan komma åt Win16-delsystemet, medan 32-bitarsversioner kan komma åt Win32.
  9. Bristen på implementeringsarv är en egenskap hos COM -tekniken , inte VB i sig, vilket bara återspeglar denna funktion.

Föreslagen läsning

  • Maureen Williams Zimmerman. Microsoft Visual Basic 6.0 Referensbibliotek . - Redmond, WA, USA: Microsoft Press, 1998. - 3344 sid. — ISBN 1-57231-864-3 .
  • Microsofts officiella akademiska kurspersonal. Microsoft Visual Basic 6.0: Programmeringsguide . - Redmond, WA, USA: Microsoft Press, 1998. - 976 sid. — ISBN 1-57231-863-5 .
  • John Clark Craig, Jeff Webb. Microsoft Visual Basic 6.0. Utvecklarverkstad. - "Rysk upplaga", 2001. - 720 s. — ISBN 1-57231-883-X .
  • Dan Appleman. Win32 API och Visual Basic. Professional = Dan Applemans Visual Basic Programmer's Guide to Win32 API. - St Petersburg. : "Peter" , 2001. - 1120 sid. — ISBN 5-272-00198-2 .
  • James Cooper. Visual Basic Designmönster: VB 6.0 och VB.NET . - Addison Wesley, 2002. - 484 sid. — ISBN 0-201-70265-7 .
  • Sergeev V. Visual Basic 6.0. Guide för proffs. - St Petersburg. : "BHV-Petersburg", 2004. - 974 sid. - ISBN 5-8206-0019-3 .
  • Brian Siler, Jeff Spotts. Använda Visual Basic 6. Classic Edition = Special Edition Använda Visual Basic 6. - M . : "Williams", 2007. - 832 sid. — ISBN 0-7897-1542-2 .