Datatyper
VBScript bruker en enkelt datatype, Variant, som lar deg lagre et tall, streng, dato, boolsk verdi, objektreferanse og annen informasjon i en variabel. Du kan bestemme innholdstypen til en variabel ved å bruke et sett med funksjoner: VarType, TypeName, IsArray, IsDate, IsEmpty, IsNull, IsNumeric, IsObject, som vil bli diskutert nedenfor. Typen informasjon den inneholder kalles også en variant undertype. En fullstendig liste over undertyper er vist i følgende tabell:
Undertype | Beskrivelse |
---|---|
Tømme | Variabelen har ikke blitt tildelt en verdi. Når du bruker en uinitialisert variabel i numeriske uttrykk, vil 0 bli erstattet, og i strenger - en tom streng. |
Null | Variabelen inneholder ingen data. |
boolsk | Boolsk kan være sant eller usant. |
Byte | Et heltall i området 0 til 255. |
Heltall | Et heltall i området -32 768 til 32 767. |
Valuta | Et fastpunktnummer i området -922 337 203 685 477.5808 til 922 337 203 685 477.5807. |
Lang | Et heltall i området -2 147 483 648 til 2 147 483 647. |
Enkelt | Enkelt presisjons flyttallnummer. For negative verdier er det gyldige området fra -3.402823E38 til -1.401298E-45. For positiv - fra 1.401298E-45 til 3.402823E38. |
Dobbelt | Dobbelt presisjons flyttallnummer. For negative verdier er det akseptable området 79769313486232E308 til -4,94065645841247E-324. For positiv - fra 4.94065645841247E-324 til 1.79769313486232E308. |
Dato tid) | Inneholder et tall som representerer en dato i området 1. januar 100 til 31. desember 9999. |
String | En sekvens av tegn. Maksimal lengde er i området 2 milliarder tegn. |
Gjenstand | En gjenstand. |
Feil | Feilnummer. |
Avhengig av uttrykket som variabelen deltar i, vil innholdet automatisk bli castet til ønsket type. Tenk på dette eksemplet:
Alternativ Eksplisitt Sub TestVBScript Dim A, B A = 5 B = "12" Application.MessageBox A + B, "", vbOkOnly End Sub
Siden en numerisk variabel er involvert i uttrykket EN, konverterer tolken verdien av variabelen B fra streng "12" inn i tallet og summer dem:
La oss endre makroen slik at variabelen EN inneholdt også linjen:
Alternativ Explicit Sub TestVBScript Dim A, B A = "5" B = "12" Application.MessageBox A + B, "", vbOkOnly End Sub
La oss kjøre den for utførelse. Nå vil skjermen vise resultatet av sammenslåingen (sammenslåingen) av to strenger, og ikke summen av deres numeriske representasjoner:
For å unngå forvirring med automatisk typekonvertering, anbefales det å bruke konverteringsfunksjoner: CBool, CByte, CCur, CDate, CDbl, CInt, CLng, CSng, CStr.
Hvis resultatet av et uttrykk er nøyaktig sammenkoblingen av strenger, og ikke summen av deres numeriske representasjoner, bør &-operatoren brukes i stedet for +.
Variabler
En variabel er en hendig symbolsk representasjon av et minneområde der en applikasjon lagrer noen data. Under kjøringen av applikasjonen kan verdien av variabelen endres. Variabelen må deklareres med Dim-setningen før bruk.
Ved å bruke én operator kan du deklarere flere variabler samtidig hvis du viser navnene deres atskilt med kommaer:
Dim venstre, høyre, topp, bunn
Ved deklarering er det ikke nødvendig å spesifisere datatypen, siden alle variabler er av typen Variant.
Hvis Option Explicit ikke er spesifisert i den første linjen i skriptteksten, kan variabler brukes uten erklæring. Men denne banen kan føre til feil som er vanskelig å oppdage. Det er nok å gjøre en feil en gang i stavemåten av variabelnavnet i programteksten for å få et uforutsigbart resultat. Vi anbefaler at du alltid spesifiserer Option Explicit og deklarerer variabler.
Variabelnavnet må oppfylle følgende krav:
- Start med et tegn i det latinske alfabetet;
- Består bare av tegnene i det latinske alfabetet eller av tegnene i det latinske alfabetet og tall;
- Ikke overskrid 255 tegn.
- Vær unik innenfor ditt omfang.
Omfang og levetid
Omfanget til en variabel bestemmes av hvor den ble deklarert. Hvis den er inne i en prosedyre, kalles en slik variabel lokal og er kun tilgjengelig innenfor denne prosedyren. Hvis en variabel er deklarert i skriptteksten, vil den være synlig for alle prosedyrer eller funksjoner som er definert i dette skriptet. Lokale variabler kan ha samme navn hvis de er deklarert i forskjellige prosedyrer.
I Explorer-treet i Script Objects Editor-vinduet er det en spesiell seksjon - konstanter og variabler - for å erklære globale variabler synlige for alle skriptfunksjoner i prosjektet.
Tolkeren tildeler minne for lokale variabler på det tidspunktet de er deklarert og frigjør det når de avslutter prosedyren. Globale variabler eksisterer fra det øyeblikket de er deklarert og til skriptet fullfører utførelse. I forhold til Gedymin betyr dette at globale variabler eksisterer gjennom hele programmets utførelsestid.
Tilordne en verdi til en variabel
Verdien til en deklarert variabel tildeles ved å bruke =-operatoren. Variabelnavnet vises til venstre for operatøren, den nye verdien vises til høyre. For eksempel:
A = 200 B = "Navn"
Skalare variabler og matriser
En variabel som inneholder en enkelt verdi kalles skalar. Noen ganger blir det nødvendig å lagre flere verdier i en variabel. I dette tilfellet bør du deklarere en matrise. Deklarasjonssyntaksen er identisk med den skalarvariabeldeklarasjonen, bortsett fra at etter navnet i parentes spesifiserer vi dimensjonen til matrisen. Følgende erklæring vil lage en matrise med 12 elementer:
Dunkle måneder (11)
I VBScript er den venstre grensen til matriseindeksen alltid 0. Dermed beregnes størrelsen på matrisen som tallet i parentes pluss én. Når du tilordner en verdi til et matriseelement, må du spesifisere indeksen i parentes:
Måneder (0) = "Januar" Måneder (1) = "Februar" Måneder (2) = "Mars" ... Måneder (10) = "November" Måneder (11) = "Desember"
På samme måte, når vi refererer til verdien av et element, bruker vi dets indeks:
Månedsnavn = måneder (5)
Matrisen trenger ikke å være endimensjonal. VBScript lar oss spesifisere opptil 60 dimensjoner når vi deklarerer en matrise. For eksempel vil følgende setning lage en todimensjonal matrise med 12 rader og to kolonner:
Dunkle månedsdager (11, 1)
Når du får tilgang til elementene i en flerdimensjonal matrise, må alle indekser spesifiseres:
Månedsdager (0, 0) = "Januar" Månedsdager (0, 1) = 31 Månedsdager (1, 0) = "Februar" Månedsdager (1, 1) = 28 ...
Ovenfor erklærte vi arrays, hvis størrelse ikke endres mens programmet kjører. Hvis du ikke vet på forhånd hvor mange elementer som trengs, kan du deklarere en dynamisk matrise:
Før bruk bør du angi størrelsen på den dynamiske matrisen ved å bruke ReDim-operatoren:
ReDim A (25)
Under utførelse kan du kalle ReDim-setningen flere ganger, hver gang du endrer størrelsen på matrisen. Bevar-alternativet bevarer verdiene til matriseelementene når størrelsen endres. For eksempel vil følgende kode øke arrayen ovenfor med fem elementer, og la de eksisterende være intakte:
ReDim Preserve A (30)
Husk at når du reduserer størrelsen på matrisen, vil verdiene til de slettede elementene gå uopprettelig tapt. Ved å bruke Erase-setningen kan du slette elementene i en fast matrise eller frigjøre minnet som er okkupert av en dynamisk matrise.
Dim A ReDim A (25) ... Slett A
Konstanter
Det er en god praksis å deklarere konstanter for verdier som brukes på nytt i teksten til programmet. Et godt tildelt konstant navn forbedrer lesbarheten, og selve bruken av det forenkler prosessen med å gjøre endringer i koden. I motsetning til variabler kan ikke verdien til en konstant endres under programkjøring. Konstanter opprettes ved å bruke Const-operatoren:
Const CountryName = "Hviterussland" Const CountryCode = 375
Flere konstanter kan deklareres innenfor én operator, atskilt med komma. Som en variabel har en konstant sitt eget omfang avhengig av hvor (i eller utenfor prosedyren) og hvordan (offentlig eller privat) den ble erklært. Konstanter opprettet av Const-operatøren uten å spesifisere Offentlig eller Privat er offentlige som standard.
I Explorer-treet i Script Objects Editor-vinduet er det en spesiell seksjon - konstanter og variabler - for å erklære globale konstanter synlige for alle skriptfunksjoner i prosjektet.
Strengkonstantverdier er omgitt av doble anførselstegn.
Verdier av typen Dato skal være omgitt av pund-tegn (#) og bruke formatet måned/dag/år i USA. For eksempel:
Const Public IndependenceDay = # 25/03/1918 #
For å unngå forvirring mellom konstanter og variabler, anbefales det å bruke et enkelt prefiks for alle konstanter, for eksempel "con", eller å skrive konstantnavnet med store bokstaver.
For å gjøre arbeidet til programmereren enklere, inneholder VBScript et sett med forhåndsdefinerte konstanter.
Operatører
VBScript-operatorer faller inn i fem kategorier: aritmetikk, sammenligning, sammenslåing, boolsk og tilordning.
Aritmetiske operatorer
Operatør | Eksempel på bruk | Beskrivelse |
---|---|---|
^ | tall ^ eksponent | Hever tall til eksponent. Tall kan være mindre enn null bare i tilfelle av en heltallsgrad. Hvis en av operandene er Null, evalueres hele uttrykket til Null. Hvis flere eksponentiseringer utføres på rad, beregnes resultatet fra venstre mot høyre. |
* | nummer1 * nummer2 | Produkt av to tall. Hvis operanden er tom, antas den å være null. Hvis minst én av operandene er Null, evalueres hele uttrykket til Null. |
/ | nummer1 / nummer2 | Reell deling av to tall. For operander ligner reglene på multiplikasjonsoperatoren. |
\ | nummer1 \ nummer2 | Heltallsdivisjon. Begge operandene castes til typen Byte, Heltall eller Long før de evalueres. For øvrig gjelder samme regler som for divisjonsoperatøren. |
Mod | nummer1 Mod nummer2 | Resten av en heltallsdivisjon. Kaster operander til et heltall, samt reglene for håndtering av Empty og Null, som i heltallsdivisjon. |
+ | uttrykk1 + uttrykk2 | Hvis begge operandene er tall, er resultatet deres aritmetiske sum. Hvis begge operandene er strenger - sammenkobling (sammenkjetting) av to strenger. Hvis en operand er et tall og den andre er en streng, vil strengoperanden bli konvertert til et tall og lagt til den numeriske. Hvis minst én av operandene er Null, evalueres hele uttrykket til Null. Hvis begge operandene er tomme, er resultatet en heltallsverdi på 0. Hvis bare én operator er tom, returneres verdien til den andre operanden som resultat. |
- | nummer1 - tall2 eller - tall | I det første tilfellet returnerer den forskjellen på to tall. I den andre inverterer den tegnet til tallet. Reglene for null- og tommeoperander er de samme som for multiplikasjonsoperatoren. |
Sammenligningsoperatører
Sammenligningsoperatørformat:
Resultat = uttrykk1 sammenligningsoperator uttrykk2
der følgende sammenligningsoperatorer brukes:< (меньше), <= (меньше или равно), >(større enn),> = (større eller lik), = (lik),<>(ikke lik).
Avhengig av typene og verdiene til operandene, utføres sammenligningen som følger:
Hvis | At |
---|---|
Begge operandene er tall. | Sammenligner to tall. |
Begge operandene er streng. | Sammenligning av to strenger utføres. |
En av operandene er et tall, og den andre er en streng. | Strengeoperanden støpes til et tall og en sammenligning av de to tallene utføres. |
En av operandene er Empty, og den andre er et tall. | Operaanden med verdien Empty antas å være 0. |
En av operandene er Empty, og den andre er en streng. | Operaanden med verdien Empty antas å være den tomme strengen "". Sammenligning av to strenger utføres. |
Begge operandene er tomme. | Operandene regnes som like. |
Minst en av operandene er Null. | Resultatet er null. |
Spesialoperatoren Is brukes til å sammenligne to objektvariabler og returnerer True hvis begge variablene refererer til samme objektforekomst.
Sammenkoblingsoperatører
Resultat = uttrykk1 og uttrykk2
Hvis operanden ikke er en streng, kastes den til en strengtype. Hvis begge operandene er Null, er resultatet også Null, men i motsetning til andre operatorer, hvis bare én operand er Null, antas det å være en tom streng. En operand med verdien Empty behandles også som en tom streng "".
Logiske operatører
VBScript gir oss følgende logiske operatorer:
- Logisk ekskludering (Xor);
- boolsk ekvivalent (ekvivalent);
- Logisk implikasjon (Imp).
Boolske uttrykk eller numeriske verdier kan brukes som operander for logiske operatorer. I det første tilfellet vil resultatet være en boolsk konstant, i det andre - et tall. Avhengig av operatøren, kan mating av én eller to nullverdier til inngangen resultere i et nullresultat. Ikke-operatoren er unær og returnerer den logiske negasjonen av uttrykket. Ikke-operatoren utfører bitvis inversjon på en numerisk operand. Resten av de logiske operatorene er binære. Tabellen nedenfor viser resultatene av å utføre hver av operatørene avhengig av verdien av operandene Exp1 og Exp2:
Exp1 | Exp2 | Og | Eller | Xor | Ekv | Imp |
---|---|---|---|---|---|---|
ekte | ekte | ekte | ekte | Falsk | ekte | ekte |
ekte | Falsk | Falsk | ekte | ekte | Falsk | Falsk |
Falsk | ekte | Falsk | ekte | ekte | Falsk | ekte |
Falsk | Falsk | Falsk | Falsk | Falsk | ekte | ekte |
ekte | Null | Null | ekte | Null | Null | Null |
Falsk | Null | Falsk | Null | Null | Null | ekte |
Null | ekte | Null | ekte | Null | Null | ekte |
Null | Falsk | Falsk | Null | Null | Null | Null |
Null | Null | Null | Null | Null | Null | Null |
I livet brukes operatørene And og Or oftest, og mye sjeldnere - Xor. Vi har ikke vært nødt til å forholde oss til den praktiske bruken av operatørene Eqv og Imp. Hvis det er vanskelig for deg å håndtere tabellen ovenfor, oppsummerer vi effekten av disse operatørene:
- Og er sann bare hvis begge operandene er sanne. I alle andre tilfeller er den enten falsk eller null.
- Eller er True hvis minst en av operandene er True.
- Xor er True hvis verdiene til operandene er forskjellige og False hvis de er like.
Når du utfører bitvis over numeriske operander, bestemmes resultatet av den logiske operatoren fra følgende tabell:
Exp1 | Exp2 | Og | Eller | Xor | Ekv | Imp |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 0 | 1 | 1 |
Oppdragsoperatør
Oppdragsoperatøren (=) er beskrevet i detalj i avsnittet "Variabler".
Operatørordre
Hvis et uttrykk inneholder flere operatorer, brukes de i en rekkefølge som kalles operatorprioritet. Du kan endre standardrekkefølgen ved å bruke parenteser. Et uttrykk innenfor parentes vurderes alltid først.
I et uttrykk som inneholder operatorer av forskjellige kategorier, utføres først aritmetiske operasjoner, deretter sammenligningsoperatorene og til slutt de logiske operatorene. Alle sammenligningsoperatorer har samme prioritet og blir evaluert fra venstre til høyre. Aritmetiske og logiske operatorer blir evaluert i følgende rekkefølge:
- Eksponentiering (^);
- Talltegnendring, unær minus (-);
- Multiplikasjon (*) og divisjon (/);
- Heltallsdivisjon (\);
- Resten av en heltallsdivisjon (Mod);
- Addisjon (+) og subtraksjon (-);
- Slå sammen strenger (&).
Hvis multiplikasjon og divisjon forekommer i samme uttrykk, utføres operasjonene i venstre-til-høyre rekkefølge. En lignende regel gjelder ved samtidig tilstedeværelse av addisjons- og subtraksjonsoperatorene.
Strengesammenkoblingsoperatoren (&) er ikke aritmetisk og er prioritert mellom aritmetiske og sammenligningsoperatorer.
Sekvensen for logiske operatorer er som følger:
- Logisk negasjon, inversjon (Ikke);
- Logisk multiplikasjon, konjunksjon (Og);
- Logisk tillegg, disjunksjon (Eller);
- Logisk ekskludering (Xor);
- boolsk ekvivalent (ekvivalent);
- Logisk implikasjon (Imp).
Betingede uttrykk
Betingede uttrykk brukes til å kontrollere rekkefølgen for utførelse av programkommandoer og lar deg organisere overganger (grener) og repetisjoner av kommandoer. Vanligvis brukes sammenligningsoperatorer sammen med betingede uttrykk.
Uttrykk Hvis..Da..Else
Det betingede grenuttrykket If lar deg utføre en bestemt gruppe kommandoer avhengig av resultatet av et logisk uttrykk eller verdien til en boolsk variabel.
For å utføre en enkelt kommando når en gitt betingelse er oppfylt, brukes en-linjes uttrykkssyntaks:
Dim S If DatePart ("w", nå) = vbMonday Så S = "mandag" Application.MessageBox S, "", vbOkOnly
Merk at Else-delen er utelatt i dette tilfellet. For å utføre en gruppe setninger, omslutt dem mellom søkeordene Then og End If.
Dim S If DatePart ("w", nå) = vbMonday Then S = "I dag er mandag" Application.MessageBox S, "", vbOkOnly End If
Hvis, når betingelsen er oppfylt, en kode må utføres, og hvis betingelsen ikke er oppfylt, en annen, brukes uttrykkssyntaksen med Else-delen:
Dim S If DatePart ("w", nå) = vbMonday Then S = "I dag er mandag" Else S = "I dag er ikke mandag" End If Application.MessageBox S, "", vbOkOnly
Hvis du trenger å velge mellom flere alternativer, er syntaksen med ElseIf-konstruksjonen egnet:
Dim S, DD = DatePart ("w", nå) If D = vbMonday Then S = "Monday" ElseIf D = vbTuesday Then S = "Tuesday" ElseIf D = vbWednesday Then S = "Wednesday" ... End If Application. MessageBox S, "", vbOkOnly
Hvis utsagn kan nestes:
Dim S, DD = DatePart ("w", nå) Hvis D = vbMonday Then S = "Monday" Else If D = vbTuesday Then S = "Tuesday" Else If D = vbWednesday Then S = "Wednesday" Else ... End If End If End If
Selv om antallet ElseIf-seksjoner i et betinget uttrykk er ubegrenset, kan mye bruk av dem føre til forvirrende, uleselig kode. Hvis du velger ett alternativ fra en rekke mulige alternativer, avhengig av verdien til en velger, anbefales det å bruke uttrykket Velg tilfelle.
Velg..Kasusuttrykk
La oss skrive om ukedagseksempelet ved å bruke et utvalgsuttrykk:
Dim S Velg Case DatePart ("w", nå) Case vbMonday S = "mandag" Case vbTuesday S = "Tuesday" Case vbWednesday S = "Wednesday" ... Case Else Err.Raise 32000, "", "Ukjent dag av uken "Sluttvalg
Siden velgeruttrykket kun evalueres én gang, vil bruk av Select..Case resultere i mer effektiv kode. Det anbefales å alltid bruke Case Else-delen for å fange opp ugyldige eller ubehandlede velgerverdier.
Sløyfeoperatører
Ganske ofte oppstår det en situasjon når koden må kjøres på nytt. For å gjøre dette, skriv en looping-setning som gjentar visse kommandoer om og om igjen. Loop-setninger brukes i mange situasjoner: når man beregner en total over en liste med tall, beveger seg gjennom poster i et datasett, eller for å kjøre en kodeblokk for flere objekter. Det er flere løkker, beskrevet i de følgende avsnittene. Noen av dem er oppfylt mens betingelsen er sann, noen - mens usann. Og til slutt er det de som blir henrettet et gitt antall ganger.
Operatør Do..Loop
Denne operatøren er ment å utføre en gruppe kommandoer til en gitt tilstand er Sann eller til den blir Sann. Tilstanden kan kontrolleres som i begynnelsen av syklusen:
Gjør [(Mens | Inntil) tilstand] Loop
og på slutten:
Gjør sløyfe [(mens | inntil) tilstand]
Exit Do-kommandoen kan vises et ubegrenset antall ganger i hoveddelen av loopen. Det brukes vanligvis sammen med det betingede uttrykket If..Then og lar deg overføre kontroll til setningen umiddelbart etter loopen. Når du bruker Exit Do inne i en nestet sløyfe, vil kontrollen flyte til den ytre sløyfen.
Følgende kode erstatter terningene:
Dim Resp, Num Do Num = Int (6 * Rnd + 1) Resp = Application.MessageBox (Num & "Another number?", "", _ VbYesNo eller vbQuestion) Loop Til Resp = vbNo
Mens..Wend
Det er en avkortet versjon av Do..Loop-operatoren og lar deg utføre en gruppe kommandoer mens betingelsen er True. Operatørsyntaks:
Mens tilstanden Wend
Merk at Exit Do ikke har noen effekt i denne sløyfen. Mens..Vend-løkker kan nestes.
For..Neste
Denne sløyfen gjentar et spesifisert sett med kommandoer et spesifisert antall ganger. Syntaksen til operatøren er:
For teller = start Til slutt Neste
Før loopen starter settes tellervariabelen til å starte. Deretter kontrolleres oppfyllelsen av tellerbetingelsen<= end, при step >= 0, eller teller> = slutt, hvis trinnet er negativt. Etter utførelse av kommandoblokken, økes den variable telleren med verdien av trinn, og alt gjentas fra begynnelsen.
Det er ikke forbudt å endre telleren i løkken, men det frarådes på det sterkeste, da det kompliserer forståelsen av programlogikken og dens feilsøking.
Exit For kan vises et hvilket som helst antall ganger i løkkens brødtekst. Løkker kan nestes. For eksempel initialiserer en sløyfe som denne en 3D-array:
Dim A (9, 9, 9) Dim I, J, K For I = 0 Til 9 For J = 0 Til 9 For K = 0 Til 9 A (I, J, K) = 1 Neste Neste Neste
For hver..Neste
For Every..Next loop-setningen gjentar et spesifisert sett med kommandoer for hvert element i en matrise eller samling og har følgende syntaks:
For hvert element I gruppe Neste
Løkken utføres hvis det er minst ett element i matrisen eller samlingen. Exit For kan vises et hvilket som helst antall ganger i løkkens brødtekst.
La oss illustrere bruken av For Every..Next med følgende kode, som viser en liste over filer fra rotkatalogen til stasjonen c: \
Dim fso, f, f1, fc, s Sett fso = CreateObject ("Scripting.FileSystemObject") Sett f = fso.GetFolder ("c: \") Sett fc = f.Filer for hver f1 i fc s = s & f1 .name & vbNewLine Next Application.MessageBox s, "Files on c: \", vbOkOnly
Prosedyrer
For å spare minne og strukturere programmet, kan en kodebit som kalles gjentatte ganger på forskjellige steder formateres som en prosedyre. Det er to typer prosedyrer i VBScript: Subs og Functions. En subrutine er en sekvens av utsagn omgitt av nøkkelordene Sub og End Sub. Subrutinen kan godta parametere som input, men returnerer ikke en verdi. En funksjon - en sekvens av utsagn innelukket mellom en funksjon og en sluttfunksjon - returnerer et resultat og kan derfor brukes i et uttrykk. Hver prosedyre må ha et navn som er unikt i modulen. Navnene på prosedyrene som er deklarert i den globale modulen må være unike gjennom hele prosjektet.
Definisjonen av en subrutine og en funksjon har følgende syntaks:
| Privat] Undernavn [(arglist)] End Sub | Privat] Funksjonsnavn [(arglist)] Avslutt funksjon
Offentlige prosedyrer er globale og tilgjengelige i alle manus i programmet. Private prosedyrer er kun tilgjengelige i skriptet der de ble deklarert. Med mindre annet er oppgitt, er den erklærte prosedyren offentlig tilgjengelig. Standard nøkkelordet kan bare brukes i hoveddelen av klassen og tjener til å indikere standardmetoden for denne klassen.
Parameterlisten har følgende syntaks:
Varnavn [, ...]
Parametre kan sendes etter verdi (ByVal) eller ved referanse (ByRef). Som standard sendes alle parametere etter verdi. Konstanter, resultatene av å evaluere uttrykk kan bare sendes etter verdi. Endring av parameteren som sendes ved referanse vil endre verdien til den eksterne variabelen. La oss forklare overføringen av parametere til prosedyren ved å bruke følgende eksempel:
Sub DoCalculation (ByRef A, ByVal B, ByVal C) A = C * 2 B = C / 2 End Sub Sub TestVar Dim V1, V2 V1 = 1 V2 = 2 DoCalculation V1, V2, 10 "Etter DoCalculation-prosedyren" V1 = 20 "V2 = 2 End Sub
Variabler som er deklarert i hoveddelen av en prosedyre er lokale og blir ødelagt når den fullfører utførelsen. Lokale variabelverdier lagres ikke.
Listen over parametere er angitt i parentes når du kaller en funksjon eller når du ringer en subrutine ved hjelp av Call-operatøren. Så vi kan skrive kallet til DoCalculation-prosedyren i eksemplet ovenfor som følger:
Ring DoCalculation (V1, V2, 10)
Utfør uttrykk
VBScript-klasser
VBScript lar deg lage nye klasser, som vi vil kalle VB-klasser i det følgende. Generelt sett er de ikke fullverdige klasser i forståelsen av objektorientert programmering, siden de ikke støtter arv og følgelig polymorfisme. Så av de tre hvalene som det objektorienterte paradigmet er basert på, gjenstår bare innkapsling - evnen til å kombinere data og metoder innenfor en enhet.
Definisjonen av en klasse utføres ved å bruke følgende konstruksjon:
Klassenavnsetninger Sluttklasse
der navn er navnet på klassen og utsagn er en eller flere definisjoner av variabler, egenskaper, prosedyrer eller funksjoner, også referert til som medlemmer av klassen. Vær oppmerksom på at i motsetning til Delphi, hvor klassedefinisjonskoden kun inneholder prosedyre- og funksjonserklæringer, i en VB-klasse, skrives medlemskoden direkte i klasseteksten.
Klassemedlemmer kan erklæres private eller offentlige. De førstnevnte er kun synlige i koden til denne klassen, mens de sistnevnte er tilgjengelige både for den interne koden og utenfor. Hvis en variabel eller funksjon (prosedyre) ikke inneholder en eksplisitt definisjon av offentlig eller privat, anses de som offentlige. Prosedyrer eller funksjoner erklært som offentlige i en klasseblokk blir metoder for denne klassen.
Variabler som er erklært som offentlige, blir klasseeiendommer sammen med eiendommer som er deklarert direkte ved å bruke konstruksjonene Property Get, Property Let, Property Set.
Definere klasseegenskaper
Ovenfor har vi allerede sagt at feltene til en klasse, enten de er eksplisitt eller ikke eksplisitt erklært som offentlige, blir dens egenskaper. I tillegg kan du opprette en klasseegenskap ved å definere spesielle funksjoner for å lese egenskapsverdien (Property Get), samt for å tildele den (Property Let eller Property Set).
Syntaksen for å definere slike funksjoner er som følger:
| Privat] Eiendom Hent navn [(arglist)] [navn = uttrykk] [navn = uttrykk] End Property Property La navn (verdi) End Property Property Set navn (referanse) End Property
Ved å definere kun én funksjon, lesing eller oppgave, kan du opprette henholdsvis en skrivebeskyttet eller skrivebeskyttet egenskap. Property Let-prosedyren brukes til å tilordne enkle datatyper, og Property Set-prosedyren brukes til å sende en objektreferanse. Merk at alle tre funksjonene kan akseptere en vilkårlig parameterliste som input. Slik kan du organisere for eksempel matriseegenskaper ved å sende elementindeksen som et argument.
Opprette og ødelegge en forekomst av en VB-klasse
En forekomst av en VB-klasse opprettes ved å bruke operatøren New.
Dim X Sett X = Nytt klassenavn
Ødeleggelsen av en tidligere opprettet forekomst skjer automatisk ved fullføring av kodeblokken der den tilsvarende variabelen ble deklarert og forutsatt at det ikke er noen eksterne referanser til den. Hvis du må ødelegge forekomsten manuelt, må du tilordne Nothing-verdien til variabelen.
'Deklarere en variabel og lage en forekomst av klassen Dim X Sett X = Nytt klassenavn ...' ved å bruke en forekomst av klassen ... 'ødelegge en forekomst av klassen Sett X = Notning ...
Initialiser og avslutt hendelser
Initialize-hendelsen oppstår når klassen instansieres, og avsluttes når den blir ødelagt. Utvikleren kan definere sine egne hendelsesdatabehandlere. Nedenfor er et eksempel på bruk av opprettelse og sletting av hendelser for et objekt:
Klasse TestClass "Definer Initialize-hendelsesbehandleren. Private Sub Class_Initialize MsgBox (" TestClass started ") End Sub" Definer Terminate-hendelsesbehandleren. Private Sub Class_Terminate MsgBox ("TestClass terminated") End Sub End Class "Opprett en forekomst av TestClass-klassen." Meldingen "TestClass started" Set X = New TestClass "Destroy the instance." Meldingen "TestClass terminated" Set X = Ingenting
Denne leksjonen vil fokusere på Funksjon... Avslutt funksjon- en subrutine som returnerer en bestemt verdi og ca prosedyre Sub ... End Sub- en subrutine som ikke returnerer noe. Et par, de er kanskje bare livsviktige nødvendig for å løse noen problemer iVBScript-skript.
Funksjon... Avslutt funksjon.
VBScript-språk vil tillate deg å lage dine egne funksjoner og prosedyrer, og vi må nå finne ut av dette.
Funksjonen (Function ... End Function) kan komme godt med når vi skal utføre samme handling (script, ellers - et uttrykk) flere ganger, men med forskjellige data. I stedet for å duplisere det samme uttrykket hundre ganger, kan du bare skrive det én gang.
Først kommer nøkkelordet Funksjon, og etter den kommer navnet på funksjonen, som du kommer på selv. Etter navnet i parentes, atskilt med komma, er parametrene til funksjonen indikert. Deretter kommer kroppen til funksjonen, som er lukket med nøkkelord Avslutt funksjon... La oss se et eksempel:
"VBScript leksjon nr. 3" file_1.vbs dim a, b Funksjon fun_name (a, b) Dim rezult rezult = a + b fun_name = rezult "tilordne verdien til funksjonen som den vil returnere til oss End Function MsgBox fun_name (5,110 ) MsgBox fun_name (15 , 16) MsgBox fun_name (25,15)
"VBScript leksjon # 3 "Funksjoner (Function ... End Function) og prosedyrer (Sub ... End Sub) "file_1.vbs dimme a, b Funksjon fun_name (a, b) Svak resultat rezult = a + b fun_name = resultat "tilordne en verdi til funksjonen som den vil returnere til oss Avslutt funksjon MsgBox fun_name (5, 110) MsgBox fun_name (15, 16) MsgBox fun_name (25, 15) |
Eksemplet viser at du kan deklarere dine egne variabler i en funksjon. Det er også mulig i selve funksjonen å tildele en verdi til en variabel som den vil returnere til oss. Denne variabelen har samme navn som funksjonen. Dette er nødvendig for at funksjonen skal returnere verdier til oss når den kalles ved å bruke MsgBox på slutten av eksemplet. Hvis dette ikke er nødvendig, kalles funksjonen slik: morsomt_navn 5 110 (ingen parentes).
Med dette ser alt ut til å være klart. La oss nå gå videre.
Sub... Avslutt Sub prosedyre.
Sub... End Sub-prosedyren kan brukes til samme formål som Function... End-funksjonen, men med én betingelse - den returnerer ikke en verdi. Alt skjer i selve prosedyren.
Prosedyren er deklarert med et nøkkelord Under, etterfulgt av et vilkårlig navn på prosedyren og dens verdi i parentes. Prosedyren er avsluttet med nøkkelord End Sub... La oss se et eksempel:
"VBScript Lesson No. 3" funksjoner (Function ... End Function) og prosedyrer (Sub ... End Sub) "file_2.vbs dim a, b Sub sub_name (a, b) Dim rezult rezult = a + b MsgBox rezult Avslutt Sub Call sub_name (5,110) Call sub_name (15,16) Call sub_name (25,15) sub_name 25,1
"VBScript leksjon # 3 "Funksjoner (Function ... End Function) og prosedyrer (Sub ... End Sub) "fil_2.vbs dimme a, b Sub sub_name (a, b) |
Selv om bare én type er definert i VBScript
, innenfor denne typen er det en inndeling i undertyper, hvis beskrivelse er gitt i tabellen. A2.1. For å konvertere variabler til en bestemt undertype, må du bruke riktig konverteringsfunksjon; slike funksjoner er også presentert i tabellen. A2.1.Tabell A2.1. Dataundertyper
Undertype | Konverteringsfunksjon | Beskrivelse |
---|---|---|
- | Automatisk tilordnet nye variabler når ingen eksplisitt verdi er definert for dem ennå | |
- | Indikerer at variabelen ikke inneholder gyldige verdier | |
Brukes til å arbeide med boolske variabler som har to gyldige verdier: eller | ||
Inneholder heltall fra 0 til 255 | ||
Inneholder heltall i området –32768 til 32768 | ||
Spesielt tallformat for pengeverdier | ||
Inneholder heltall i området -2147483648 til 2147483647 | ||
Enkelt presisjon flytepunkt type | ||
Type med dobbel presisjon flytepunkt | ||
Inneholder tall som tilsvarer datoer og klokkeslett fra 1. januar 100 til 31. desember 9999 | ||
Tegndataundertype. Tekststrenger i VBScript er en sekvens av tegn omsluttet av doble anførselstegn | ||
- | Objektreferanse | |
- | Datatype for lagring av feilnummer |
Inn i en variabel som tidligere ble deklarert ved hjelp av nøkkelordet
, kan du skrive en lenke til ethvert objekt. Dette gjøres ved å bruke en operatør, for eksempel:Sett FSO = CreateObject ("Scripting.FileSystemObject")
Her er funksjonen
returnerer en forekomst av et objekt, hvor referansen er lagret i en variabel. :Konstanter
Egendefinerte konstanter i VBScript er deklarert ved hjelp av nøkkelordet
, for eksempel:Const MyConst = "Dette er min konstant"
I tillegg støtter VBScript mange innebygde navngitte konstanter (de trenger ikke å deklareres i tillegg i skriptet), hvis bruk gjør det enklere å bruke ulike interne funksjoner (f.eks.
eller ). Navnene, verdiene og beskrivelsene av de interne konstantene er gitt i tabell. A2.2 – A2.9.Tabell A2.2. Konstanter for å angi farger
Navn | Betydning | Beskrivelse |
---|---|---|
& h00 | Svart farge | |
& hFF | rød farge | |
& hFF00 | Grønn farge | |
& hFFF | Gul | |
& hFF0000 | Blå farge | |
& hFF00FF | Lilla | |
& hFFFF00 | Turkis | |
& hFFFFFF | hvit farge |
Tabell A2.3. Konstanter for nummerering av ukedager
Navn | Betydning | Beskrivelse |
---|---|---|
1 | søndag | |
2 | mandag | |
3 | tirsdag | |
4 | onsdag | |
5 | Torsdag | |
6 | fredag | |
7 | lørdag |
Tabell A2.4. Konstanter for å bestemme den første dagen i uken og den første uken i året
Navn | Betydning | Beskrivelse |
---|---|---|
0 | Bruk regionale systeminnstillinger for å bestemme den første dagen i uken | |
1 | Den første uken i året regnes som den der det var 1. januar | |
2 | Den første uken i året regnes som den der det var minst fire dager i det nye året. | |
3 | Årets første uke regnes som den første hele uken. |
Tabell A2.5. Konstanter for arbeid med dato og klokkeslett
Navn | Betydning | Beskrivelse |
---|---|---|
0 | Dato og klokkeslett vises i formatet som bestemmes av de regionale innstillingene til systemet | |
1 | Vis dato i fullformat | |
2 | Vis dato i kort format | |
3 | Vis tid i fullformat | |
4 | Vis tid i kort format |
Tabell A2.6. Dialogbokskonstanter
Navn | Betydning | Beskrivelse |
---|---|---|
0 | Knappen vises OK | |
1 | Knappene vises OK og Kansellering(Avbryt) | |
2 | Knappene vises Stoppe(Avbryte), Gjenta(Prøv på nytt) og Hopp over(Overse) | |
3 | Knappene vises Ja(Ja), Nei(Nei) og Kansellering(Avbryt) | |
4 | Knappene vises Ja(Ja og Nei(Nei) | |
5 | Knappene vises Gjenta(Prøv på nytt) og Kansellering(Avbryt) | |
16 | Ikonet vises Stopp Mark | |
32 | Ikonet vises Spørsmålstegn | |
48 | Ikonet vises Utropstegn | |
64 | Ikonet vises | |
0 | Som standard er den første knappen valgt i vinduet. | |
256 | Som standard er den andre knappen valgt i vinduet. | |
512 | Som standard er den tredje knappen valgt i vinduet. | |
768 | Som standard er den fjerde knappen valgt i vinduet. | |
0 | Dialogboksen vises i modal modus | |
4096 | Dialogboksen vises i modal modus og er plassert på toppen av alle lanserte applikasjoner |
Tabell A2.7. Resultater av å klikke på knapper i dialogbokser
Navn | Betydning | Beskrivelse |
---|---|---|
1 | Knapp trykket OK | |
2 | Knapp trykket Kansellering(Avbryt) | |
3 | Knapp trykket Stoppe(Avbryte) | |
4 | Knapp trykket Gjenta(Prøv på nytt) | |
5 | Knapp trykket Hopp over(Overse) | |
6 | Knapp trykket Ja(Ja) | |
7 | Knapp trykket Nei(Nei) |
Tabell A2.8. Konstanter for å angi dataundertyper
Navn | Betydning | Beskrivelse |
---|---|---|
0 | Variabel ikke initialisert | |
1 | Variabelen inneholder ikke gyldige data | |
2 | Variabelen har undertype | |
3 | Variabelen har undertype | |
4 | Variabelen har undertype | |
5 | Variabelen har undertype | |
6 | Variabelen har undertype | |
7 | Variabelen har undertype | |
8 | Variabelen har undertype | |
9 | Variabelen har undertype | |
10 | Variabelen har undertype | |
11 | Variabelen har undertype | |
12 | Variabelen har en undertype (bare for matriser med typevariabler) | |
13 | Datatilgangsobjekt | |
14 | Variabelen har undertype | |
17 | Variabelen har undertype | |
8192 | Variabel er en matrise |
Tabell A2.9. Andre konstanter
Navn | Betydning | Beskrivelse |
---|---|---|
Chr (13) | Vognretur | |
Chr (13) og Chr (10) | Vognretur og linjemating | |
Chr (12) | Oversettelse av siden | |
Chr (10) | Linjeoversettelse | |
Chr (0) | Null kodetegn | |
Null linje | Null linje | |
Chr (9) | Tab-tegn | |
Chr (11) | Vertikalt tabulatortegn | |
-2 | Bruk standardinnstillinger fra regionale systeminnstillinger | |
-1 | Boolsk sant | |
0 | Boolsk verdi "false" | |
-2147221504 | Angir minimumsverdien for brukerdefinerte feiltall |
Matriser i VBScript kan være av to typer: statisk (fast lengde) og dynamisk (variabel lengde). Matriser er deklarert, som vanlige variabler, ved å bruke nøkkelordet
.For å erklære en statisk matrise, etter navnet, må du spesifisere i parentes den største verdien som indeksen til et element i denne matrisen kan ta, for eksempel:
I VBScript (i motsetning til for eksempel VBA) starter nummereringen i matriser alltid fra null, derfor matrisen som er deklarert ovenfor
vil inneholde 11 elementer, som du må referere til som følger:Du kan deklarere en todimensjonal matrise ved å spesifisere maksimale indeksverdier for henholdsvis rader og kolonner, for eksempel:
Dim MyArr (5, 10) "Array med 6 rader og elleve kolonner
Når du deklarerer en dynamisk matrise, er størrelsene ikke angitt i parentes:
For å bruke en dynamisk matrise i et skript, bruk operatoren
som definerer den spesifikke lengden på matrisen, for eksempel:Etter det kan elementene i den dynamiske matrisen nås på samme måte som elementene i en vanlig:
MyArr (0) = "Dette er det første elementet"
MyArr (1) = "Dette er det andre elementet"
Merk at en dynamisk matrise kan endres størrelse flere ganger (ved å bruke den samme
). For å bevare innholdet i matrisen, bruk et nøkkelord i operatoren, for eksempel:Operatører
Flere typer operatører støttes i VBScript, som er beskrevet nedenfor.
Aritmetiske operatorer
De aritmetiske operatorene til VBScript-språket er presentert i tabell. A2.10.
Tabell A2.10. Aritmetiske operatorer
Operatør | Beskrivelse |
---|---|
(unær operatør) | Reversere tegnet på et argument |
(binær operatør) | Å trekke fra to tall |
Legger til to tall | |
Multiplikasjon av to tall | |
Deling av to tall | |
Heltallsdivisjon av to tall | |
Beregner resten av to tall | |
Eksponentieringsoperator |
Relasjonelle og boolske operatører
Relasjonelle operatorer brukes til å sammenligne verdiene til to variabler. Disse operatørene, beskrevet i tabellen. A2.11, kan bare returnere boolske verdier
eller .Tabell A2.11. Relasjonelle operatører
Også inne i betingede operatorer kan logiske operatorer brukes (tabell A2.12).
Tabell A2.12. Logiske operatører
Operatør | Beskrivelse |
---|---|
Negasjonsoperatør. Returnerer hvis operanden er lik. Ellers kommer den tilbake | |
ELLER-operatør. Returnerer hvis en av operandene er lik. Ellers kommer den tilbake | |
Operatøren av forholdet "EKSKLUSIVT ELLER". Returnerer hvis en av operandene er lik og den andre er lik. Ellers kommer den tilbake | |
Operatøren av forholdet "AND". Returnerer hvis begge operandene er like. Ellers kommer den tilbake |
Betingede operatører
VBScript støtter den betingede operatøren
... Generell oversikt over denne operatøren:Hvis tilstand_1 Deretter
uttrykk_3]
Når du utfører uttalelsen
den logiske tilstanden blir evaluert ( tilstand_1) etter nøkkelordet. Hvis det, som et resultat av å evaluere tilstanden, oppnås en verdi, da og operatøren går ut. Ellers sjekkes betingelsene etter nøkkelordene etter tur; hvis en av disse betingelsene er sann, blir det tilsvarende uttrykket utført, hvoretter kontrollen overføres til neste operatør etter End If. Hvis ingen av betingelsene som er testet er sanne, kjøres uttrykket etter nøkkelordet. Eksempel:En annen operatør som lar deg velge mellom flere alternativer er
... Syntaksen for denne setningen er:Velg Sak uttrykk
Sak verdi_1
uttrykk_3]
Her beregnes først verdien , som deretter sammenlignes med verdiene etter nøkkelordene
... Hvis det er samsvar, utføres setningene i den tilsvarende blokken. Hvis ingen av de tilgjengelige verdiene samsvarer med verdien , deretter utføres utsagnene etter ordet Else. Et eksempel på bruk av operatoren:Farge = "Fargen er ikke klar"
Sløyfeoperatører
Flere typer looper støttes i VBScript: loop
, sykle, sykle, sykle. La oss vurdere hver av dem mer detaljert.Syklus For ... Neste
Generelt sløyfeoperatøren
er skrevet som følger:Til teller = start At slutt
Parameter her er looptelleren;
- startverdien til denne telleren; - sluttverdi; er trinnet til telleren. Hvis nøkkelordet ikke er spesifisert, blir økningen tatt lik én. Sløyfen avsluttes når tellerverdien blir større enn parameterverdien ... Uttrykket brukes for å gå ut av loopen ubetinget.Et eksempel på bruk av en løkke
vist i liste A2.1. Oppføring A2.1. Et eksempel på bruk av en løkke"Syklusen vil bli utført 11 ganger
Syklus For hver … Neste
Sløyfeoperatør
er designet for å iterere over alle elementer i en matrise eller samling:For hver element I gruppe
Her parameter er en variabel som verdien til det gjeldende elementet i en matrise eller samling vil bli skrevet inn under iterasjoner; - navnet på en matrise eller samling av objekter.
KommentarHusk at i JScript, for å iterere over alle elementene i en samling, må du bruke hjelpeobjektet
.
Bruke operatøren
du kan umiddelbart gå ut av loopen.Et eksempel på bruk av en løkke
vist i liste A2.2. Oppføring A2.2. Et eksempel på bruk av en løkke"Erklære variabler
Dim FSO, mappe, filer, fil, s
s = "Filliste" & vbCrLf
"Opprett et FileSystemObject
Sett FSO = CreateObject ("Scripting.FileSystemObject")
"Opprett et mappeobjekt for rotkatalogen til C-stasjonen:
Set Folder = FSO.GetFolder ("C: \")
"Lag en filsamling av alle filer i rotkatalogen til C-stasjonen:
"Søker gjennom alle elementene i Files-samlingen
"Velg filnavnet for gjeldende element i filsamlingen
"Vis den genererte strengen på skjermen
Syklus Mens... Wend
er skrevet som følger:Så i løkken
utførelsestilstanden til løkkelegemet kontrolleres før starten av neste iterasjon. Hvis tilstand lik, så utføres løkkens kropp, ellers slutter løkken.Et eksempel på bruk av en løkke
vist i liste A2.3. Oppføring A2.3. Et eksempel på bruk av en løkketheCount = 42 "Startverdi for looptelleren
theMoments = "& theCount &" sekunder igjen til eksplosjonen! "
theMoments = "Ett sekund igjen!"
theCount = theCount - 1 "Reduser tellerverdien
Syklus Gjør ... Loop
Denne sløyfen kan brukes på to måter (med en forutsetning, som kontrolleres før starten av neste iterasjon, og med en postbetingelse, som kontrolleres etter slutten av iterasjonen):
Gjøre tilstand
Løkke tilstand
Hvis loopen bruker nøkkelordet
, deretter fortsetter iterasjonene til er lik ; hvis den brukes, vil sløyfen avsluttes så snart verdien av betingelsen blir.Operatør
lar deg gå ut av loopen før du fullfører iterasjonene.Et eksempel på bruk av en løkke
vist i liste A2.4. Oppføring A2.4. Et eksempel på bruk av en løkkeDim howFar "Øvre grense for syklusteller
Dim sum (10) "Array med 11 elementer, indekser fra 0 til 10
"Syklusen vil bli utført 11 ganger
Andre operatører
La oss se på noen flere ofte brukte operatører (tabell A2.13).
Tabell A2.13. Andre operatører
Avvikshåndtering
VBScript-unntakshåndtering er aktivert med operatøren
... Hvis det etter det oppstår en kjøretidsfeil mens du kjører en setning i skriptet, vil kontrollen bli sendt til neste setning i teksten.Et spesielt objekt brukes til å analysere feil
, som inneholder to egenskaper: - den numeriske koden for feilen som oppstod og - en kort beskrivelse av denne feilen.Som et eksempel, her er en del av skriptet som håndterer unntak når du kobler til en nettverksstasjon:
Ved feil gjenoppta neste "Slå på håndtering av kjøretidsfeil
"Koble til en nettverksstasjon
WshNetwork.MapNetworkDrive Drive, NetPath
Mess = "Feil ved tilkobling av stasjon" & Drive & "to" & NetPath & _
"Feilkode:" & e.number & "Description:" & e.description
WshShell.Popup Mess, 0, "Map Network Drive", vbCritical
Mess = "Drive" & Drive & "vellykket tilkoblet" & NetPath
WshShell.Popup Mess, 0, "Map Network Drive", vbInformation
For å avbryte unntakshåndteringsmodusen, må du kjøre operatøren
.Prosedyrer og funksjoner
VBScript støtter to typer subrutiner: innebygde funksjoner og brukerfunksjoner eller prosedyrer.
Matematiske funksjoner
Funksjonene som er tilgjengelige i VBScript for matematiske beregninger er beskrevet i tabellen. A2.14.
Tabell A2.14. Matematiske funksjoner
Funksjon | Beskrivelse |
---|---|
Returnerer den absolutte verdien av et tall | |
Returnerer arctangensen til et tall | |
Returnerer cosinus til et tall | |
Eksponentiell funksjon, returnerer tallet e hevet til en potens | |
Returnerer heltallsdelen av et tall | |
Returnerer den naturlige logaritmen til et tall | |
Returnerer et tilfeldig tall mellom 0 og 1 | |
runde ( x [, nvmdesimal]) | Returnerer resultatet av avrunding av et tall nøyaktig til desimaler |
Signert funksjon av nummer | |
Returnerer sinusen til et tall | |
Beregner kvadratroten av et tall og returnerer den resulterende verdien | |
Returnerer tangensen til et tall |
Symbolske funksjoner
De mest brukte funksjonene som kan brukes til å utføre ulike operasjoner på tegnstrenger er beskrevet i Tabell. A2.15.
Tabell A2.15. Symbolske funksjoner
Funksjon | Beskrivelse |
---|---|
Returnerer ASCII-koden til det første tegnet i en streng | |
Returnerer et ASCII-tegn | |
InStr ( str1, str2 [, sammenlign]) | Returnerer indeksen til tegnet der den første forekomsten av en delstreng begynner på linje ... Parameter angir tegnnummeret for å starte søket. Hvis denne parameteren ikke er spesifisert, utføres søket fra begynnelsen av linjen. Søket utføres fra venstre mot høyre. Parameter setter sammenligningsmodus ved behandling av strenger (0 - binær, sammenligning, 1 - tekstsammenligning) |
InStrRev ( str1, str2 [, start [, sammenlign]]) | Samme som funksjon , men søket utføres fra høyre til venstre, dvs. returnerer nummeret på det siste tegnet som forekomsten av delstrengen begynner fra på linje |
Returnerer strengen som er et resultat av sammenkoblingen av delstrengene i matrisen ... Parameter spesifiserer et tegn som skiller understrenger (som standard er dette tegnet et mellomrom) | |
Returnerer en streng med alle alfabetiske tegn konvertert til små bokstaver | |
Returnerer tegn fra begynnelsen av linjen | |
Returnerer antall tegn i en streng | |
LTrim ( str), RTrim ( str), Listverk ( str) | Fjerner henholdsvis innledende, etterfølgende eller begge mellomrom fra en streng |
Midt (str, start [, len]) | Returnerer en delstreng fra en streng som starter ved posisjon og har en lengde ... Hvis parameteren ikke er spesifisert, returneres alle tegn som starter fra posisjon til slutten av linjen |
Erstatte ( expr, find, replacewith [, start [, count [, compare]]]) | Returnerer en streng som er hentet fra en streng ved å erstatte delstrengene som er inkludert i den på understrenger ... Parameter definerer antall understrenger som skal behandles på denne måten (som standard gjøres alle mulige erstatninger). Parameter |
Returnerer tegn fra slutten av strengen | |
Returnerer en streng som består av mellomrom | |
Dele (Utt. [, delim [, telle [, sammenlign]]]) | Returnerer en rekke strenger som er et resultat av splitting av en streng inn i understrenger. Parameter spesifiserer et tegn som skiller delstrenger (som standard er dette tegnet et mellomrom). Parameter bestemmer antall understrenger som skal behandles på denne måten (som standard skrives alle understrenger til matrisen). Parameter setter sammenligningsmodus når du arbeider med strenger (0 - binær sammenligning, 1 - tekstsammenligning) |
StrComp (str1, s tr2 [, sammenlign]) | Returnerer et tall - resultatet av strengsammenligning og ... Hvis , deretter -1 returneres; hvis, så returneres 0; hvis , så returneres 1. Parameter setter sammenligningsmodus når du arbeider med strenger (0 - binær sammenligning, 1 - tekstsammenligning) |
Returnerer en streng bestående av tegn | |
Returnerer en streng med alle alfabetiske tegn konvertert til store bokstaver |
For å jobbe med dato og klokkeslett har VBScript et stort sett med funksjoner, hvorav de viktigste er vist i tabellen. A2.16.
Tabell A2.16. Funksjoner for arbeid med dato og klokkeslett
Funksjon | Beskrivelse |
---|---|
Returnerer gjeldende systemdato | |
DateAdd ( intervall, tall, dato) | Returnerer en dato som er atskilt fra datoen på intervaller spesifisert av parameter , som kan ha følgende verdier: "yyuy" - år, "q" - quarter, "m" - month, "y" - day of the year, "d" - day, "w" - week, "ww" - uke i året, "h" - time, "m" - minutt, "s" - sekund |
DatoDiff ( interval, date1, date2 [, firstdayofweek [, firstweekofyear]]) | Returnerer forskjellen i intervaller (de mulige verdiene for denne parameteren er de samme som i funksjonen) mellom datoer og ... Parameter - dette er en konstant som viser hvilken av ukedagene som bør regnes som den første (se tabell A2.3, A2.4). Parameter er en konstant som viser hvilken uke som bør regnes som årets første (se tabell A2.4) |
DatoPart ( interval, date [, firstdayofweek [, firstweekofyear]]) | Returnerer den delen av datoen som tilsvarer parameteren ... Parameterverdier og her er de samme som i funksjonen |
DateSerial ( år måned dag) | Returnerer en undertypevariabel som samsvarer med det angitte året (parameter), måned (parameter) og dag (parameter ) |
Returnerer en undertypevariabel som tilsvarer datoen spesifisert av karakterparameteren | |
Trekker ut timetallet fra datoen eller klokkeslettet spesifisert av parameteren. Returnerer et heltall fra 0 til 23 | |
Returnerer hvis parameteren spesifiserer en gyldig dato, ellers | |
Trekker ut antall minutter fra datoen eller klokkeslettet spesifisert av parameteren ... Returnerer et heltall fra 0 til 59 | |
Trekker ut månedsnummeret fra datoen spesifisert av parameteren. Returnerer et heltall fra 1 til 12 | |
Månedsnavn ( måned [, forkortelse]) | Returnerer navnet for måneden med et tall ... Hvis boolesk parameter er lik, så presenteres månedens navn som en forkortelse, ellers - i sin helhet |
Returnerer gjeldende dato og klokkeslett i skjemaet som tilsvarer de regionale innstillingene til Windows | |
Returnerer gjeldende systemtid | |
Returnerer antall sekunder siden midnatt | |
TimeSerial ( time, minutt, sekund) | Returnerer en undertypevariabel som tilsvarer angitt time (parameter), minutt (parameter) og sekund (parameter) |
Returnerer en undertypevariabel som tilsvarer tiden spesifisert av karakterparameteren | |
Ukedag (dato [, første dag i uken]) | Returnerer et heltall – ukedagen for datoen spesifisert av parameteren. Parameter er en konstant som indikerer hvilken ukedag som bør vurderes først |
Ukedagnavn ( ukedag [, abbr [, første dag i uken]]) | Returnerer navnet for ukedagen med et sekvensielt nummer ... Hvis boolesk parameter er lik, så presenteres navnet på ukedagen som en forkortelse, ellers - i sin helhet. Parameterverdi her er det samme som i funksjonen |
Trekker ut året fra datoen spesifisert av parameteren , og returnerer dette heltallet |
syntaktisk programmeringsoperatørskript
VBScript gir to typer prosedyrer: prosedyrer (subrutiner) - nøkkelordet Sub, og funksjoner (funksjoner) - angitt med nøkkelordet Funksjon. Den eneste forskjellen er at funksjoner returnerer en viss verdi. I begge tilfeller er prosedyrer en kodeblokk. Definisjonen av en prosedyre eller funksjon må avsluttes med nøkkelordene End Sub eller End Function Prosedyre eller funksjonsanrop: Ring prosedyrenavn, ordet Call kan utelates. Parametre kan overføres til en prosedyre ved referanse eller etter verdi. Ved referanse - verdien av den opprinnelige variabelen endres, etter verdi - en kopi opprettes, og verdien til den opprinnelige variabelen endres ikke. Som standard, i VBScript, sendes parameteren ved referanse (ByRef). Hvis du trenger å passere etter verdi, kan du bruke ByVal nøkkelordet: Function function_name (ByVal variabel_navn)
Innebygde VBScript-funksjoner
- 1. Funksjoner for konvertering og kontroll av VBScript-datatyper (C-convert, I-Is (type)):
- * CBool () - konverterer variabelen til den boolske typen;
- * CByte () - konverterer variabelen til Byte-typen;
- * CCur () - konverterer variabelen til valutatypen;
- * CDate () - konverterer variabelen til datotypen;
- * CDbl () - konverterer variabelen til Double-typen;
- * CInt () - konverterer variabelen til heltallstypen;
- * CLng () - konverterer variabelen til typen Long;
- * CSng () - konverterer variabelen til Single-typen;
- * CStr () - konverterer variabelen til strengtypen;
- * TypeName () - som returnerer navnet på den brukte datatypen;
- * IsNumeric ();
- * IsDate ();
- * IsArray ();
- * Er tom ();
- * IsError ();
- * Mangler ();
- * IsNull ();
- * IsObject ();
- * Hex () - konverter desimaldata til strengrepresentasjon av heksadesimale verdier;
- * Okt () - Konverter desimaldata til strengrepresentasjon av oktale verdier.
- 2. Strengfunksjoner i VBScript:
- * Asc () - returnerer den numeriske koden til tegnet;
- * AscB () - returnerer den første byten av den numeriske tegnkoden;
- * AscW () - returnerer koden for et tegn i unicode-format;
- * Chr (), ChrB (), ChrW () - returnerer et tegn etter kode;
- * InStr () - lar deg finne en sekvens av tegn i kroppen til en strengvariabel og returnere dens posisjon. Søket utføres fra begynnelsen av linjen. Hvis ingenting blir funnet, returneres 0;
- * InStrRev () - utfører det samme som InStr (), men søket utføres fra slutten av linjen;
- * Venstre () - lar deg ta et spesifisert antall tegn fra en strengsekvens, tellende fra venstre;
- * Høyre () - lar deg ta det angitte antallet tegn fra strengsekvensen, tellende fra høyre;
- * Mid () - lar deg ta et spesifisert antall tegn fra en strengsekvens, tellende fra en spesifisert posisjon;
- * Len () - returnerer lengden på strengen;
- * LCase () - konverterer en streng til små bokstaver;
- * UCase () - konverterer strengen til store bokstaver;
- * LTrim () - fjerner mellomrom på begynnelsen av en linje;
- * RTrim () - fjerner mellomrom på slutten av en linje;
- * Trim () - fjerner mellomrom på begynnelsen og slutten av en linje;
- * Erstatt () - erstatter en delstreng med en annen;
- * Mellomrom () - returnerer en streng med den angitte lengden fra mellomrom;
- * String () - returnerer en streng med den angitte lengden på tegn;
- * StrComp () - sammenligner to strenger;
- * StrConv () - konverterer en streng;
- * StrReverse () - "vender" sekvensen av tegn i en streng i omvendt rekkefølge;
- * Tab (). - vis det spesifiserte antallet tabulatortegn (ligner på den innebygde konstanten vbTab);
- 3. Numeriske funksjoner i VBScript:
- * Abs () - returnerer modulen til et tall;
- * Int () - returnerer nærmeste heltall;
- * Fix () - forkaster brøkdelen;
- * Round () - runder opp til det angitte antall desimaler;
- * Rnd () og Randomize-kommandoen brukes for å få tilfeldige verdier. Syntaks: random_number = Int (minimum + (Rnd () * maksimum)). Før du bruker Rnd (), må du initialisere tilfeldig tallgeneratoren med kommandoen Randomize;
- * Sgn () - returnerer informasjon om tegnet til et tall. Returnerer -1 for negativ, +1 for positiv og 0 for 0.
- 4. Datetime-funksjoner i VBScript:
- * Dato () - returnerer systemdatoen;
- * Tid () - returnerer systemtiden;
- * Nå () - returnerer dato og klokkeslett. Du kan sette dem med operatorene med samme navn, for eksempel: Dato = # 6/10/2009 # (# Måned / dag / år #);
- * DateAdd () - Legger til det angitte antallet år, måneder osv. til datoen;
- * DateDiff () - returnerer forskjellen mellom datoer i enheter fra år til sekunder;
- * DatePart () - returnerer den angitte delen av datoen (år, måned, ukedag, etc.);
- * DateSerial () - Oppretter en datoverdi basert på de beståtte tegnverdiene. DateValue ()-funksjonen gjør det samme, men med et annet format for verdiene som mottas. TimeSerial () og TimeValue () fungerer på lignende måte (for tid);
- * Dag () - returnerer dagen (ligner på den tilsvarende DatePart ());
- * År () - returnerer året;
- * Måned () - returnerer måneden;
- * Ukedag () - returnerer ukedagen;
- * Time () - returnerer timen;
- * Minutt () - returnerer minutter;
- * Second () - returnerer sekunder;
- * MonthName () - returnerer navnet på måneden;
- * Timer () - Returnerer antall sekunder som har gått siden midnatt.
- 5. Formateringsfunksjoner i VBScript:
- * Format () - Formatsyntaks (uttrykk, "format"), for eksempel: Format (2.505, "#, ## 0.00"). Likeledes for resten av funksjonene;
- * Formattall ();
- * FormatCurrency ();
- * FormatDateTime ();
- 6. Funksjoner for å jobbe med arrays i VBScript:
- * Array () - lar deg opprette en matrise med ønsket størrelse og type automatisk og umiddelbart laste inn de beståtte verdiene i den;
- * Filter () - lar deg få en annen på grunnlag av en matrise, filtrerer ut elementene vi trenger i den originale matrisen;
- * LBound () - returner informasjon om den nedre grensen til matrisen (nummeret til den første verdien i matrisen);
- * UBound () - returner informasjon om den øvre grensen til matrisen (nummeret til den siste verdien i matrisen)
- * Join () - slår sammen flere strenger som utgjør en matrise til én strengvariabel. Standardskilletegn er et mellomrom, men du kan også spesifisere ditt eget skilletegn;
- * Splitt () er det motsatte av Join ().
- 7. Funksjoner for brukerinteraksjon i VBScript:
- * MsgBox (), konstanter +
- * InputBox ().
Eksempel ved bruk av MsgBox
Response = MsgBox ("Klikk på knappen", vbYesNo)
Hvis Respons = vbJa Da
"hvis du klikket på Ja-knappen
"hvis du trykket på knappen No
Metoden WshShell.Popup () og Beep-kommandoen brukes også til å samhandle med brukeren.