You are on page 1of 34

Kiegszts az Informatika 10.

osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

VISUAL BASIC SCRIPT


PROGRAMOZSI TMUTAT
Ez az sszefoglal a kzismereti informatika tantrgy Algoritmusok s adatok fejezethez kszlt. Tartalmazza a tantrgy emelt szint rettsgijhez szksges tudnivalkat is. Nem tekinthet azonban a VBScript teljes kr lersnak.
Ezzel kapcsolatban lsd: VBScript dokumentci.
Az sszefoglal sszelltsakor nhny kivteltl eltekintve a tanterv s az emelt szint rettsgi kvetelmnyeit tartottuk szem eltt. Nem trtnk ki a grafikus fellet objektumainak kezelsre, mert ez nem rsze a tantervnek. A 10. osztlyos tanknyv (Nemzeti Tanknyvkiad, r.sz. 16172) Szvegdobozok, parancsgombok s trsaik leckje bemutatja az
objektumok hasznlatnak alapjait. Az sszefoglalban esetenknt megjegyzsknt utalunk az objektumokkal kapcsolatos tudnivalkra.
Az sszefoglal ltalban nem tartalmaz konkrt pldkat. Ezeket lsd [3]-ban. A kzlt forrskd dlt bets rszeit
helyettesteni kell a megfelel tartalommal (pldul a kifejezs helyett rjuk be a megfelel kifejezst). A szintaxis bemutatsnl a szgletes zrjelben lv rszek elhagyhatk.

A Visual Basic Script programozsi nyelv


A Visual Basic Script jellemzi
A Microsoft Visual Basic Scripting Edition (rvidtve: VBScript) a Windows opercis rendszer vezrlsnek 1 , illetve
a weblapok kliens- s szerveroldali programozsnak egyik nyelve. Vilgos, knnyen rthet szintaxisa, gazdag eszkztra, a programfejleszts egyszer mdja alkalmass teszi az algoritmusok szmtgpes megvalstsnak bemutatsra, a programozs alapelemeinek elsajttsra. A programok rshoz s futtatshoz csak egy szvegszerkesztre
(pldul Jegyzettmb), illetve egy interpreterre van szksg. A Windows opercis rendszer tartalmaz ilyen interpretert.
A szkripteket hta kiterjeszts esetn nll ablakban, htm kiterjesztssel pedig egy bngszben (pldul Internet Explorer 2 ) futtathatjuk. A szkripteket tartalmaz (dinamikus) weblapok ksztse nagymrtkben motivlja a dikokat a tananyag elsajttsban.
Br a nyelvet elssorban dinamikus weblapok programozsra hoztk ltre, a forrskdban egyltaln nem szksges
HTML-elemeket hasznlni, gy a VBScript programok rshoz alapveten nincs szksg a HTML ismeretre.
A VBScript tartalmazza mindazon eszkzket, melyek az emelt szint informatika rettsgi feladatainak megoldshoz
szksgesek.
A VBScript lehetv teszi a grafikus felhasznli fellet objektumainak kezelst (szvegdobozok, parancsgombok
stb., lsd: [3]). gy egyszeren s szemlletesen elsajtthatjuk az objektumorientlt programozsi technikhoz szksges tudnivalkat.
A VBScript megalapozza a Visual Basic programozsi nyelv hasznlatt. A VBScript ismeretben knnyen ttrhetnk
a Visual Basic-re, melynek 2005-s vltozata teljes mrtkben objektumorientlt, szles krben hasznlhat, modern
programozsi nyelv. A Visual Basic 2005 szerepel az emelt szint informatika rettsgin engedlyezett szoftverek listjn (2007). Ingyenes Express Edition fejleszti krnyezete letlthet a Microsoft webhelyrl:
http://msdn.microsoft.com/vstudio/express/vb
A Visual Basic 6.0 fejleszti krnyezete szintn szerepel az informatika rettsgin s az informatika OKTV-n engedlyezett szoftverek listjban.
A VBScript ismeretek felhasznlhatk az Office-alkalmazsok programozsban is (makrk ksztse). Az alkalmazsok programozsi nyelve, a Visual Basic for Applications (VBA) szintaxisa s utastskszlete szinte teljes egszben
megegyezik a VBScript-tel.

A VBScript interpreter
A Windows opercis rendszer VBScript interpretere a teleptskor kerl a httrtrra:
\Windows\system32\vbscript.dll
A hta kiterjeszts fjlokat az mshta.exe futtatja az interpreter segtsgvel. Az exe fjlt a \Windows\system32 mappban talljuk meg. A hta fjlra trtn dupla kattints egyenrtk az
mshta elrsit\fjlnv.hta

parancs kiadsval.
A htm kiterjeszts fjlokat a bngsz futtatja (pldul \Program Files\Internet Explorer\iexplore.exe).

1
2

A Windows Scripting Host szolgltats tjn. Lsd pldul: Windows Script Host.
Ms bngszkkel kapcsolatban lsd: A program futtatsa.

Juhsz Tibor: Visual Basic Script programozsi tmutat

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A programfejleszts menete
A forrskd elksztse
A forrskdot egy egyszer szvegszerkesztvel (pldul Jegyzettmb) rhatjuk meg. A fjlt hta (vagy htm) kiterjesztssel mentsk el!
A Jegyzettmbben kapcsoljuk ki a hossz sorok trdelst (Formtum men). Ekkor bekapcsolhatjuk az llapotsor
megjelentst (Nzet men). Az llapotsor a hibajavtsnl hasznos, mert jelzi, hogy a kurzor hnyadik sorban (s hnyadik oszlopban) helyezkedik el.
Nhny Windows vltozatnl a kiterjesztsek elrejtse esetn a Jegyzettmb automatikusan txt kiterjesztssel ltja el a
fjlt. Ha pldul a mentsnl a program.hta nevet adjuk a fjlnak, akkor az azonost program.hta.txt lesz, gy a megnyitsnl nem indul el az interpreter (ugyanez vonatkozik a htm kiterjesztsre is). A kiterjesztsek elrejtst az Intz
Eszkzk/Mappa belltsai menjben kapcsolhatjuk ki a Nzet flnl a Fjlok s mappk csoportban (Ismert fjltpusok kiterjesztsnek elrejtse).
A Windows Jegyzettmbje helyett a forrskdok elksztshez s szerkesztshez javasoljuk az ingyenes
Notepad2 programot, melynek magyar nyelv vltozata letlthet a flos freeware webhelyrl. A Notepad2 telepts nlkl futtathat. A program mdosthat sznkdokkal kiemeli a forrskd klnbz szintaktikai elemeit, automatikus behzsokat alakt ki s szmos tovbbi eszkzzel rendelkezik.
A Notepad2 magyar nyelv vltozatnak szksge van az msvcr70.dll fjlra, amit a krnyezeti vltozk belltsa helyett egyszeren tmsolhatunk a Notepad2-t tartalmaz mappba. A dll fjlt megtalljuk pldul a
C:\Program Files\Microsoft Office\OFFICE10\VS Runtime
illetve a
C:\Program Files\Microsoft Office\OFFICE11\VS Runtime
mappban, vagy letlthetjk a DLL-files.com webhelyrl.

Forrskdkszts a Notepad2 programmal


Megjegyzs: a txt fjlok megnyitst az Intzben a jobb egrkattintsra eltn helyi men Trsts parancsval rendelhetjk hozz a Notepad2 programhoz.

Juhsz Tibor: Visual Basic Script programozsi tmutat

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A VBScript programok futtatsa


hta fjlok futtatsa
Ha a forrskdot hta 3 kiterjesztssel mentjk el, akkor az Intzbl dupla kattintssal indthatjuk a vgrehajtst. A
program az opercis rendszerben megszokott ablakot nyit meg. Brmilyen HTML fjl trhat hta kiterjesztsre.
A fjl megnyitsakor interpreter elvgzi a teljes kd szintaktikai ellenrzst, illetve a fggvnyeket s eljrsokat kivve vgrehajtja a szkript utastsait (a fggvnyeket s eljrsokat csak a meghvsuk esetn).
A hta fjlok futtatsakor megnyl ablak tulajdonsgait (ikon, keret, gombok stb.) a [3] ismerteti (91. oldal). Ha megfelelnek szmunkra az alaprtelmezett rtkek, akkor nincs szksg a belltsokra.
A hta fjlokrl bvebben lsd: HTML-alkalmazsok.
htm fjlok futtatsa
A htm fjlokat bngszvel nyithatjuk meg. Az Internet Explorer az interpreter segtsgvel vgrehajtja a szkriptek
utastsait. A FireFox s a Mozilla (illetve a SeaMonkey) bngszkhz a
http://ietab.mozdev.org
webhelyrl tlthetnk le a szkriptek futtatshoz szksges plugint (IE Tab). Br a webhely nem emlti, a plugin mkdik a SeaMonkey bngszben is.
Az Internet Explorer belltsa
A Microsoft XP SP2 biztonsgi okokbl letiltja a szkriptek vgrehajtst. Ennek elkerlshez engedlyezzk az
Internet Explorerben az aktv tartalom futtatst a Sajtgp (IE7: Szmtgp) mappban tallhat fjlokra (Eszkzk/Internetbelltsok/Specilis/Biztonsg).
A kvetkez belltsokkal megknnytjk a hibakeresst:
Eszkzk/Internetbelltsok/Specilis, Bngszs csoport
Parancsfjlokban val hibakeress letiltsa
kikapcsolva
zenet megjelentse minden parancsfjlhibrl
bekapcsolva
gy minden hiba esetn hibazenetet kapunk, amely magyar nyelven megadja a hiba lerst s az elforduls helyt.
Ha csak hta kiterjeszts fjlokat hasznlunk, akkor kikerlnk a bngsz ellenrzse all, gy nincs szksg az
Internet Explorer belltsaira.

Az Internet Explorer belltsai a szkriptek futtatshoz

HTML application: HTML-alkalmazs.

Juhsz Tibor: Visual Basic Script programozsi tmutat

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A vrusirtk s a szkriptek
Sok vrusirt (pldul Norton AntiVirus) biztonsgi okokbl nem engedlyezi a szkriptek szmra a fjlrendszer elrst. A futtatskor megjelen zenetablakban engedlyezhetjk a szkript vgrehajtst.

A program mdostsa
Egyszer programok ksztsnl hagyjuk megnyitva a Jegyzettmbt s a bngszt is. A mdosts menete:
1. a Jegyzettmbben elvgezzk a forrskd mdostst,
2. mentjk a forrskdot,
3. tvltunk a programablakba, illetve a bngszbe (pldul Alt+Tab),
4. frisstjk a fjlt (F5).
Egy mr meglv fjlt clszer elszr megnyitni, majd megjelenteni a forrst (a jobb egrgomb gyorsmenjben:
Forrs megtekintse).

A programfejleszts eszkzei
A VBScript programok ksztse egy egyszer szvegszerkesztn s egy interpretert tartalmaz opercis rendszeren
(illetve bngszn) kvl ms eszkzt nem ignyel. sszetett programok fejlesztshez azonban clszer valamilyen
integrlt fejleszti krnyezetet hasznlni. Ehhez javasoljuk az MS Office FrontPage 2003-at, amely automatikus kdkiegsztssel (IntelliSense), a kulcsszavaknl megjelen magyarzatokkal s szmos ms hatkony eszkzzel segti a
forrskd megrst.

VBS programfejleszts FrontPage krnyezetben


Az MS Office tartalmazza a Microsoft Script Editort, amely szintn rendelkezik beptett hibakeres (debugger) eszkzkkel. Ha a teleptsnl nem mdostottuk, akkor a Script Editort a
c:\Program Files\Microsoft Office\Office10 (MS Office XP)
illetve a
c:\Program Files\Microsoft Office\Office11 (MS Office 2003)
mappban talljuk (Office XP: MSE7.exe, Office 2003: MSE7.exe). Gyakori hasznlata esetn clszer parancsikonknt
kitenni az Asztalra.
A Script Editor hasznlatt [3] ismerteti (373. oldal).
A Microsoft webhelyrl letlthet az ingyenes Microsoft Windows Script Debugger, amellyel trspontokat helyezhetnk el a programban, futs kzben lekrdezhetjk a vltozk rtkeit, illetve lpsenknt is vgrehajthatjuk a kdot.
A teleptprogram megfelel vltozatt (Script Debugger Windows NT 4 and Later) a Microsoft Download Center
segtsgvel talljuk meg. A keressorba rjuk be: Script Debugger.
A Debuggert rszletesebben a [3] irodalom ismerteti.
A teleptett fejleszteszkzket a bngszbl is megnyithatjuk (Nzet/Parancsfjl-hibakeres/Megnyits).

Juhsz Tibor: Visual Basic Script programozsi tmutat

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

VBScript dokumentci
Magyar nyelven a [3] irodalom mutatja be a VBScript hasznlatt. A knyv teljes egszben trgyalja az emelt szint
rettsgi kvetelmnyeinek megfelel ismereteket. Ezen tlmenen azonban foglalkozik az objektumalap programozssal, a grafikus felhasznli fellet kezelsvel is.
A VBScript programozsi nyelv teljes referencijt a Microsoft Development Network (MSDN) webhelyn talljuk
meg (Web Development).

HTML-alkalmazsok (HTA)
A HTML-alkalmazsok (HTA-k) olyan VBScript (vagy JavaScript) nyelven rt programok, amelyek a bngsz felgyelete nlkl, nll ablakban futnak. Kikerlik a bngsz felhasznli fellett, de teljes egszben kihasznlhatjk
a programozsi nyelv s a dinamikus objektummodell (DOM) eszkzeit, erforrsait. Az ablak tartalmt HTML-elemek
s stluslapok (CSS) segtsgvel alakthatjuk ki, a legegyszerbb alkalmazsok ksztshez azonban nincs szksg a
HTML-kd ismeretre.
A HTML-alkalmazsok a bngsz ellenrzse nlkl hozzfrnek a httrtrakhoz, hasznlhatjk az ActiveX vezrlket, bezrhatjk az ablakot stb. Nem kapunk figyelmeztet zenetet, a bngsz nem krdez r az engedlyezsre.
Brmely HTML-fjl futtathat hta kiterjesztssel.

Az ablak tulajdonsgainak mdostsa


A megjelen ablak tulajdonsgait a HTA:APPLICATION elem segtsgvel mdosthatjuk. Ha megfelelnek az alaprtelmezett rtkek, akkor nem szksges beilleszteni a forrskdba az elemet. Az elemet a zrtag helyett a nyittag
vgn elhelyezett /-jellel is lezrhatjuk:
<HTA:Application id = "nv" tulajdonsgok />

A tulajdonsgokat sztringknt kell megadni nv = "rtk" formban.


A tulajdonsg neve

Jelentse

Alaprtelmezett rtk

applicationName

az ablak neve (objektumknt trtn hivatkozshoz)

border

a keret tpusa (thick, dialog, thin, none)

borderStyle

a keret stlusa (normal, raised, sunken, complex, static)

caption

cmsor engedlyezse (yes/no)

yes

contextMenu

a jobb egrgombra megjelen men engedlyezse


(yes/no)

yes

icon

az alkalmazs ikonjnak elrsi tja

innerBorder

bels keret megjelentse (yes/no)

yes

maximizeButton

Teljes mret gomb megjelentse (yes/no)

yes

minimizeButton

Kis mret gomb megjelentse (yes/no)

yes

navigable

hivatkozs esetn az j dokumentum az alkalmazs ablakban jelenjen meg (yes: igen, no: j ablakban)

no

scroll

grdtsv megjelentse (yes, no, auto)

yes

scrollFlat

skbeli megjelens grdtsv (yes: igen, no: trhats)

no

selection

kivlaszts engedlyezse az ablakban (yes/no)

yes

showInTaskBar

az alkalmazs megjelentse a Tlcn (yes/no)

yes

singleInstance

az alkalmazs egyszerre csak egy pldnyban indthat


(yes/no)

no

sysMenu

a rendszermen engedlyezse a cmsor ikonjra kattintskor (yes/no)

yes

windowState

az ablak kezdeti mrete (normal, maximize, minimize)

normal

thick
normal

A HTA:Application elem tulajdonsgai

Juhsz Tibor: Visual Basic Script programozsi tmutat

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A VBScript programok szerkezete


nll szkriptek ksztse
A VBScript programok utastsait nem szksges HTML-kdba illesztennk. A forrsfjlban a <script> s
</script> elemek kztt tallhat utastsok a fjl megnyitsakor vgrehajtsra kerlnek. A nyit tagban meg kell
adnunk az alkalmazott programozsi nyelvet 4 .
<script language = "VBS">
utastsok
</script>

gy termszetesen nem hasznlhatjuk a grafikus fellet objektumait, de erre az algoritmusok fejezet trgyalsnl, illetve az rettsgin nincs is szksg. A grafikus fellet objektumaival kapcsolatban lsd a 10. osztlyos informatikatanknyv Szvegdobozok, parancsgombok s trsaik fejezett (119. oldal)!

A szkriptek beillesztse HTML-fjlokba


A SCRIPT-elemet HTML-fjlokba is beilleszthetjk. A szkript a HTML-kdban brhol elhelyezkedhet. Egy fjlban
tbb szkript szerepelhet. A nyelvet (language) csak az els szkriptnl kell megadni.
A szkriptet ltalban a HEAD-ben helyezzk el. Clszer a HEAD-ben elhelyezni
a globlis konstansok s vltozk deklarcijt,
a globlis vltozk rtkadshoz szksges utastsokat,
a dokumentum betltsnl vgrehajtsra kerl utastsokat,
a sajt fggvnyek s eljrsok kdjt.
A BODY tartalmazza
az ablakban megjelen objektumok kdjt, szvegeket, kpeket,
azokat a szkripteket, amelyek a document.write segtsgvel a betltsnl mdostjk a HTML-kdot.
Megjegyzs
Ha felhasznljuk a HTML-kd elemeit, akkor gyeljnk arra, hogy az utasts vgrehajtsakor mr ismert legyen az
objektum azonostja. Az objektumot definil elem utn kell elhelyezni a r hivatkoz globlis szkriptet! Mivel az
eljrsok s fggvnyek utastsai csak hvskor kerlnek vgrehajtsra, ezek megelzhetik a HTML-objektumok definciit. gy az esemnykezel eljrsokat tartalmaz szkripteket tehetjk a HEAD-be is.

Kd csatolsa a fjlhoz
A VBScript program utastsait kln szvegfjlban trolhatjuk. A fjlban csak az utastsok szerepeljenek a SCRIPTelem nyit- s zrtagja nlkl! A szvegfjl kiterjesztse tetszleges lehet. ltalban a vbs vagy inc kiterjesztst hasznljk.
Az utastsokat a hta vagy htm fjlban lv SCRIPT-elem src (source) tulajdonsgnak megadsval csatolhatjuk a
forrskdhoz:
<SCRIPT language = "VBS" src = "elrsi t"></SCRIPT>

Ilyen SCRIPT-elemet tbb helyre is beilleszthetnk a forrskdba, de csak a nyit- s zrtaggal elltott szkriptek kz
tehetjk (teht a szkripteken kvl).
Ksztsk el pldul a kvetkez szvegfjlokat (az utastsok magyarzatt lsd ksbb), s helyezzk el ezeket a
fprogram.hta fjllal azonos mappban. A fprogramot dupla kattintssal indthatjuk.
rtkads.vbs fjl:
x=6 : y=7

fggvny.vbs fjl:
function osszead(a,b)
osszead=a+b
end function

kirs.vbs fjl:
document.write x, " + ", y, " = ", osszead(x,y)

fprogram.hta fjl:
<script language="VBS" src="fggvny.vbs"></script>
<script src="rtkads.vbs"></script>
<script src="kirs.vbs"></script>

Az egyes szvegfjlokban deklarlt vltozk globlisnak szmtanak 5 , s a szvegfjlokban definilt fggvnyeket,


illetve eljrsokat is meghvhatjuk a hta fjl forrskdjban.
4
5

Az alaprtelmezett programozsi nyelv a JavaScript.


Kivve termszetesen a fggvnyek, eljrsok loklis vltozit.

Juhsz Tibor: Visual Basic Script programozsi tmutat

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A VBScript elemei
A VBScript szintaxisa
Minden egyes utastst kln sorba kell rni. Hossz sorok esetn egy szkz s egy alhzsjel utn a kvetkez sorban folytathat a kd:
utasts _
az utasts folytatsa

Szksg esetn egy sorba rhatunk tbb utastst is, ekkor kettsponttal kell ket egymstl elvlasztani:
utasts1 : utasts2

Ezt a lehetsget azonban nem clszer alkalmazni.


A VBScript a sztringek kivtelvel nem klnbzteti meg a kisbetket s a nagybetket egymstl.

Megjegyzsek a forrskdban
A megjegyzseket aposztrfjel (') utn rjuk. Az interpreter az aposztrfjeltl a sor vgig terjed rszt figyelmen kvl
hagyja.
utasts ' megjegyzs

Az aposztrfjel termszetesen a sor elejn is llhat.


Az aposztrfjel helyett hasznlhatjuk a Rem kulcsszt (remark). Ez azonban utastsnak szmt, teht a sor elejn (vagy
kettspont utn) kell elhelyezkednie.
rem megjegyzs
utasts : rem megjegyzs

Azonostk a VBScript-ben
A program elemeit (vltozk, konstansok, fggvnyek, eljrsok) azonostval ltjuk el. Kt klnbz elemnek nem
adhatjuk ugyanazt az azonostt.
Az azonost az angol bc betibl, szmokbl illetve alhzsjelbl llhat. Betvel kell kezddnie, s legfeljebb 255
karaktert tartalmazhat. Nem hasznlhatjuk azonostknt a VBScript kulcsszavait.
Az interpreter az azonostkban nem klnbzteti meg egymstl a kisbetket s a nagybetket.

Szmok
A szmokat a matematikban szoksos formban adjuk meg. Trtszmok esetn a forrskdban tizedespontot hasznlunk, az input/outputnl azonban a terleti belltsoknl megadott tizedesjel (pldul tizedesvessz) szerepel!
Egsz szmoknl hasznlhatjuk a tizenhatos szmrendszert (pldul a sznkdok esetn). A hexadeximlis rtket a
szm el rt &h karakterekkel jelezzk, pldul: &hffaa66.
A vals szmokat megadhatjuk hatvnykitevs alakban is, pldul: 34.5E-6 = 34.510-6.

Sztringek
A karaktersorozatokat (sztringeket) idzjelek kz rjuk. A sztringen bell szksg esetn aposztrfjelet (') alkalmazunk. Ha ragaszkodunk az idzjelhez, akkor dupln kell kirnunk.
document.write "Idzjel 'hasznlata' az idzjelen bell."
document.write "Idzjel ""hasznlata"" az idzjelen bell."

Az res sztringet kt idzjel jelzi (szkz nlkl): "".


A VBScript nem ismeri kln a karakter tpust, helyette egyetlen karakterbl ll sztringet hasznlunk, pldul: "a".
A forrskdban szerepl sztringeket nem vlaszthatjuk el kt sorba!
A sztringek sszehasonltst a magyar bcnek megfelel sorrend szerint az StrComp fggvnnyel vgezhetjk el.

Logikai vltozk
A logikai vltozk rtke True (igaz) vagy False (hamis) lehet. A VBScript az igaz logikai rtket -1-nek, a hamisat
pedig 0-nak tekinti, gy aritmetikai kifejezsekben s relcikban is szerepelhetnek. Pldul: true + 10 = 9, false > 0.5.

Dtumok
A dtum/id tpus rtkeket kettskeresztek (#) kz kell tenni. A terleti belltsoknl megadott vszmoknl elhagyhat az els kt szmjegy (az vszzad). A rszek kz a dtumoknl / jelet vagy ktjelet (-), az idpontoknl
kettspontot (:) runk. Az idpontoknl hasznlhat az am (dleltt) vagy pm (dlutn) rvidts. A dtum s az idpont
kz szkz kerl, de brmelyikk el is hagyhat. A vezet nullkat egyik rsznl sem kell kirni.
#1996/05/11#
#07:20pm#

#1996-5-11#
#14:5:11#

#96-05-11#

Az v/hnap/nap sorrendet a terleti belltsok szablyozzk.

Juhsz Tibor: Visual Basic Script programozsi tmutat

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A VBScript kulcsszavai
Abs
And
Array
Asc
Atn
Call
Case
CBool
CByte
CCur
CDate
CDbl
Chr
CInt
Class
Clear
CLng
Const
Cos
CreateObject
CSng
CStr
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Description
Dictionary
Dim
Do
Each
Else
Empty
Eqv
Erase
Err
Error

Eval
Execute
Exit
Exp
Explicit
False
FileSystemObject
Filter
FirstIndex
Fix
For
FormatCurrency
FormatDateTime
FormatNumber
FormatPercent
Function
GetObject
GetRef
Global
Hex
HelpContext
HelpFile
Hour
If
IgnoreCase
Imp
Initialize
InputBox
InStr
InStrRev
Int
Is
IsArray
IsDate
IsEmpty
IsNull
IsNumeric
IsObject
Join
LBound

Juhsz Tibor: Visual Basic Script programozsi tmutat

LCase
Left
Len
Length
LoadPicture
Log
Loop
LTrim
Match
Matches
Mid
Minute
Mod
Month
MonthName
MsgBox
Next
Not
Now
Nothing
Null
Number
Oct
On
Option
Or
Pattern
Private
PropertyGet
PropertyLet
PropertySet
Public
Raise
Randomize
ReDim
RegExp
Rem
Replace
RGB
Right
Rnd

Round
RTrim
ScriptEngine
ScriptEngineBuildVersion
ScriptEngineMajorVersion
ScriptEngineMinorVersion
Second
Select
Set
Sgn
Sin
Source
Space
Split
Sqr
StrComp
String
StrReverse
Sub
Tan
Terminate
Test
Time
Timer
TimeSerial
TimeValue
Then
Trim
True
TypeName
UBound
UCase
Value
VarType
Weekday
WeekdayName
Wend
While
With
Xor
Year

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Vltozk
A vltozk deklarlsa
A vltozkat nem ktelez deklarlni, s nem lehet megadni a tpusukat. A vltozk deklarlsa:
dim vltoznv1, vltoznv2,

A dim utasts tetszleges szmszor, a szkriptek tetszleges helyn elfordulhat. A szkriptek egy fjlban sszesen 127
globlis vltozt tartalmazhatnak. (Ez a korltozs termszetesen nem vonatkozik a fggvnyek s eljrsok loklis
vltozira.)
A deklarlst a nehezen felderthet hibk elkerlse miatt az option explicit utastssal ktelezv tehetjk. Az utastst a szkript elejre kell rni.
option explicit
utastsok

Megjegyzs
Az option explicit utasts nem szerepelhet esemnykezel szkriptben 6 .

A vltozk tpusa
A vltozk tpust nem lehet megadni a deklarciban. A tpust az els rtkadskor az interpreter hatrozza meg. Ezt
tpuskonverzis fggvnyekkel mdosthatjuk.
Megjegyzs
A VBScript egy ltalnos, variant tpust rendel a vltozkhoz, amely klnfle altpusok trolsra hasznlhat.

A vltozk alaprtelmezett rtke


Ha egy kifejezsben olyan vltozt hasznlunk fel, amely mg nem kapott kezdrtket, akkor az interpreter automatikusan a kvetkez rtket rendeli hozz:
numerikus kifejezsben:
0
sztringekkel vgzett mveleteknl: ''' (res sztring)
logikai mveletek esetn:
hamis (false, 0)
A deklarci s az els rtkads kztt a vltoz rtke Empty (res). Az alaprtelmezett rtk miatt az Empty-t csak
az IsEmpty fggvnnyel vizsglhatjuk meg.

Az elemi tpusok rtkkszlete


Az albbiakban megadjuk az ltalnos variant tpus altpusainak rtkkszlett.
Altpus:

Megnevezs:

Tartomny:

boolean

logikai

true (-1) vagy false (0)

string
date
time

karakterlnc
dtum
id

legfeljebb ~ktmillird karakter


100. janur 1. s 9999. december 31. kztt
0:00:00-tl 23:59:59-ig

Egsz tpus vltozk:


byte
bjt
integer
egsz
long
hossz egsz
currency pnznem
Vals tpus vltozk:
single
egyszeres pontossg vals

double

dupla pontossg vals

0-tl 255-ig
-32 768-tl +32 767-ig
-2 147 483 648-tl +2 147 483 647-ig
-922 337 203 685 477,5808-tl
-922 337 203 685 477,5807-ig
-3,402823E38-tl -1,401298E-45-ig
a negatv s
+1,401298E-45-tl +3,402823E38-ig
a pozitv szmokra, illetve 0
-1,79769313486232E308-tl
-4,94065645841247E-324-ig
a negatv s
+4,94065645841247E-324-tl
+1,79769313486232E308-ig
a pozitv szmokra, illetve 0

<script EVENT=esemny FOR=objektum>

Juhsz Tibor: Visual Basic Script programozsi tmutat

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A pnznem tpus vltozkat az egszekhez soroltuk, mert a VBScript a 10000-szeresket trolja egsz szmknt. gy a
szmts 4 tizedesjegy pontossg.

Automatikus tpuskonverzi
Az interpreter a kifejezsek kirtkelsnl automatikusan elvgzi a szksges tpuskonverzit. Az eredmny tpust a
kifejezsben szerepl opertorok tpusa, illetve a kifejezs vrt rtke dnti el (rtkad utasts, relci stb.).
Mivel sztringeket a + jellel is sszefzhetnk (lsd: sztringek sszefzse), a beolvasott rtkekkel vgzett mveletek
nem vrt eredmnyre vezethetnek. Pldul a kvetkez utastsok esetn:
x
y
w
z

=
=
=
=

inputbox("x = ")
inputbox("y = ")
x + y
x * y

a w-be a kt beolvasott rtk sszefzse (konkatencija), a z-be viszont a szorzata kerl!

A vltozk hatkre
A fggvnyek s eljrsok defincijn kvl elhelyezked utastsok alkotjk a globlis szkriptet. A globlis
szkriptben deklarlt vltozk (illetve konstansok) az egsz dokumentumra nzve globlisak. Brmely szkriptben, brmely fggvnyben vagy eljrsban hivatkozhatunk rjuk (ha nem deklarlunk ugyanolyan nev vltozt).
A fggvnyekben/eljrsokban deklarlt vltozk az adott fggvnyre/eljrsra nzve loklisak. Csak a fggvnyen/eljrson bell hivatkozhatunk rjuk. A fggvny/eljrs befejezsekor megsznnek, rtkk eltnik.

Konstansok
Konstansok deklarlsa
const nv = kifejezs, nv = kifejezs,

A kifejezs nem tartalmazhat vltozkat, a felhasznl ltal definilt vagy beptett VBScript fggvnyeket.
A fggvnyekben/eljrsokban deklarlt konstansok loklisak az adott fggvnyre/eljrsra nzve.

Beptett konstansok
A beptett konstansok azonostja vb-vel kezddik. A beptett konstansokat deklarls nlkl hasznlhatjuk a kifejezsekben. Az albbiakban csak a leggyakrabban elfordul rtkeket adjuk meg.
MsgBox konstansok
Konstans
Parancsgombok
vbOKOnly
vbOKCancel
vbAbortRetryIgnore
vbYesNoCancel
vbYesNo
vbRetryCancel
Ikonok
vbCritical
vbQuestion
vbExclamation
vbInformation
Visszatrsi rtk
vbOK
vbCancel
vbAbort
vbRetry
vbIgnore
vbYes
vbNo

rtk

Gombok, ikonok

0
1
2

OK
OK, Mgse
Kilps (Megszakts, Lellts),
Ismt (jra), Tovbb (Kihagys)

3
4
5

Igen, Nem, Mgse


Igen, Nem
Ismt (jra), Mgse

16
32
48
64
1
2
3
4
5
6
7

kritikus zenet (piros kr fehr x-szel)


krdjel
felkiltjel
informci (i bet)
OK
Mgse (ESC)
Kilps (Megszakts, Lellts)
Ismt (jra)
Tovbb (Kihagys)
Igen
Nem

Hasznlatukat lsd: Kirs az MsgBox fggvnnyel.

Juhsz Tibor: Visual Basic Script programozsi tmutat

10

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Sztring konstansok
Konstans
vbNewLine
vbTab

rtk
Chr(10)+Chr(13)
Chr(9)

Jelents
j sor
Tabultor

Sznkonstansok
Konstans
vbBlack
vbRed
vbGreen
vbYellow
vbBlue
vbMagenta
vbCyan
vbWhite

Szn
fekete
vrs
zld
srga
kk
bbor
trkizkk (cin)
fehr

RGB-kd (hex)
&h00
&hFF
&hFF00
&hFFFF
&hFFFFFF
&hFF00FF
&hFFFF00
&hFFFFFF

Kifejezsek
Opertorok
Aritmetikai opertorok
Az aritmetikai opertorok a precedencia sorrendjben:

ellentettkpzs (legmagasabb precedencij, pldul: 32 = +9!)


^
hatvnyozs (az alap csak egsz kitev esetn lehet negatv)
*/
szorzs, oszts
\
egsz oszts hnyadosa
Mod
egsz oszts maradka
+
sszeads, kivons
&
sztringek sszefzse.
Br a sztringek sszefzse nem aritmetikai mvelet, az automatikus tpuskonverzi miatt szerepel a felsorolsban.
Pldul: "5" & 3 + 4 = 57.
Logikai opertorok
A logikai opertorok a precedencia sorrendjben:
Not
nem mvelet
And
s mvelet
Or
vagy mvelet
Xor
kizr vagy mvelet
Eqv
ekvivalencia
Imp
implikci
A logikai mveletek kt egsz tpus numerikus rtk kztt bitenknt kerlnek vgrehajtsra.
A VBScript nem ismeri a logikai kifejezsek rvidre zrst. Egy kifejezst akkor is teljes egszben kirtkel, ha a
rszkifejezsbl mr lehet tudni az eredmnyt. gy pldul futsi hibhoz vezet egy n maximlis index tmb esetn a
do while i<=n and a(i)<>

i=i+1
loop

ciklus. A helyes megoldst lsd: Az indexhatr tllpse fejezetben.


Relcis opertorok
A relcis opertorok azonos precedencival rendelkeznek!
=
egyenl
<>
nem egyenl
<
kisebb
>
nagyobb
<=
kisebb vagy egyenl
>=
nagyobb vagy egyenl
A sztringek sszehasonltst a magyar bcnek megfelel sorrend szerint az StrComp fggvnnyel vgezhetjk el.
Brmely numerikus rtk kisebb, mint egy sztring.
Megjegyzs
Kt objektumvltoz azonossgt az Is opertorral ellenrizhetjk (ugyanarra az objektumra mutatnak-e).

Juhsz Tibor: Visual Basic Script programozsi tmutat

11

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Sztringek sszefzse
Sztringeket az & opertor segtsgvel fznk ssze. Az automatikus tpuskonverzi miatt sztringeket s numerikus
rtkeket szintn sszefzhetnk. Pldul: "5" & 3 = 53.
Br kompatibilitsi okokbl az sszefzsre a + jel is hasznlhat, kerljk el az alkalmazst!

Az opertorok precedencija
Az opertorokat a relcis opertorok kivtelvel a precedencia sorrendjben soroltuk fel. Az azonos precedencij
mveleteket az interpreter balrl jobbra vgzi el. Ha egy kifejezs tbbfle opertort tartalmaz, akkor elszr az aritmetikai, aztn a relcis, majd a logikai opertorok kerlnek kirtkelsre. A sorrenden zrjelek segtsgvel vltoztathatunk.

Mveletek dtumokkal
A VBScript a dtum/id tpus vltozban az 1899. december 30. ta eltelt napokat trolja (az eltte lv dtumok
rtke negatv). Az idpontot a nap trtrszben fejezi ki.
Kt dtum klnbsge a kztk eltelt napok szmval egyenl. Ha egy dtumhoz szmot adunk hozz, akkor annyi
nappal megnveljk (negatv szm esetn cskkentjk) az rtkt. A klnbz idintervallumokkal (pldul ht, hnap) trtn mdostst lsd a DateAdd fggvny ismertetsnl.

Utastsok
Az albbi utastsokat a hivatkozsnak megfelel helyen trgyaljuk:
call, const, dim, erase, (dinamikus tmbknl: erase), function, on error, option explicit, redim, rem, set, sub.

rtkad utasts
Az rtkad utasts jele az egyenlsgjel (=).

Beolvass a billentyzetrl
Beolvass az InputBox-szal
Billentyzetrl adatokat az InputBox fggvny segtsgvel adhatunk meg a programnak. Az InputBox fggvny, ezrt
csak kifejezsben (rtkad utastsban) szerepelhet.
inputbox(zenet[, ablakcm][, kezdrtk][, xhely][, yhely])

zenet:
cm:
kezdrtk:
xhely:
yhely:
Pldul:

az InputBox szvege. Soremels a vbNewLine beptett konstanssal.


az InputBox ablak cme,
a szvegdobozban megjelen sztring,
vzszintes pozci twipben 7 ,
fggleges pozci twipben.

nev = inputbox("rja be a nevt!", "Beolvass", "Ide rja a nevet!")

Az InputBox visszatrsi rtke sztring. Szksg esetn a tpuskonverzis fggvnyekkel numerikus rtkk kell talaktani. Pldul:
szam = cint(inputbox("rjon be egy egsz szmot!", , 0))

Lsd mg: automatikus tpuskonverzi.


Az InputBox visszatrsi rtke
"" (res sztring)
ha a felhasznl trlte a kezdrtket, s az OK gombra kattintott;
"" (res sztring)
ha nem volt kezdrtk, s a felhasznl az OK gombra kattintott
(de nem rt be semmit);
Empty
ha a felhasznl a Mgse vagy a Bezrs gombra kattintott.
Beolvass szvegdobozokkal
A grafikus felhasznli fellet objektumaival knyelmesebb adatbevitel rhet el (lsd a 10. osztlyos informatika tanknyv Szvegdobozok, parancsgombok s trsaik fejezett a 119. oldalon). A szvegdoboz tartalmt az objektum value
tulajdonsgval rhetjk el. A beolvass egy parancsgomb esemnykezel eljrsnak meghvsakor trtnik meg.

1 twip = 1/15 pixel, de fgghet az opercis rendszer belltsaitl, pldul a betmrettl.

Juhsz Tibor: Visual Basic Script programozsi tmutat

12

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Kirs a kpernyre
Kirs a document.write eljrssal
document.write sztringkifejezs, sztringkifejezs,

A sztring tartalmazhat HTML-kdot is. Soremelst a <br> elem beillesztsvel hozunk ltre. Pldul:
document.write "Els sor. <br>"
document.write "Msodik sor."

vagy:
document.write "Els sor. <br> Msodik sor."

Vltoz rtknek megjelentse (automatikus tpuskonverzi!) pldul:


document.write "x = " & x & "<br>"

vagy egyszeren:
document.write "x = ", x, "<br>"

Megjegyzs
A document.write-ot nem hasznlhatjuk esemnykezel eljrsokban, mert trli a dokumentum HTML-kdjt!
A document.write a document objektum write metdusa.
Kirs az MsgBox fggvnnyel
msgbox(zenet[, gombok][, cm])

zenet:
az MsgBox-ban megjelen szveg (soremels: vbNewLine),
cm:
az MsgBox ablak cme.
A gombok paramter az ablakban megjelen gombokat s ikonokat szablyozza. A hozzjuk tartoz konstansokat ssze
kell adni. Pldul:
valasz = msgbox("Tovbb?", vbYesNoCancel+vbQuestion), vagy:
valasz = msgbox("Tovbb?", 3+32)

A fggvny visszatrsi rtknek megfelel konstansokat lsd az MsgBox konstansoknl.


Ha nincs szksgnk a visszatrsi rtkre, akkor az MsgBox-ot eljrsknt is meghvhatjuk:
msgbox "Ksz.", vbokonly+vbinformation

Vltoz rtknek kirsa az MsgBox fggvnnyel (automatikus tpuskonverzi!):


msgbox "x = " & x, vbokonly+vbinformation

Kirs HTML-elemekkel
A kirshoz brmelyik, szveg megjelentsre alkalmas HTML-elemet felhasznlhatjuk (lsd a 10. osztlyos informatika tanknyv Szvegdobozok, parancsgombok s trsaik fejezett a 119. oldalon). Ilyen elem a bekezds (P), a DIV, a
SPAN stb. Az innerText tulajdonsg csak formzatlan szveg, az innerHTML tulajdonsg tetszleges HTML-elem
beillesztsre alkalmas.

Feltteles elgazsok
IFTHENELSE
if felttel then
[utastsok]
[elseif felttel
[utastsok]]

[else
[utastsok]]
end if

Ha egy felttel teljesl, akkor vgrehajtja a hozz tartoz utastsokat. Ekkor a htralv rsz (elseif, else) nem kerl
kirtkelsre. Az utasts a Pascaltl eltren valdi tbbg szelekcit valst meg.
Az elseif g tetszleges szmszor ismtldhet. Az else g elhagyhat.
Figyeljnk arra, hogy az elseif-et egybe kell rni, az end if-et viszont kln.
Az IF utastsok egymsba gyazhatk.

Juhsz Tibor: Visual Basic Script programozsi tmutat

13

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

SELECT CASE
select case tesztkifejezs
[case kifejezslista
[utastsok]]

[case else
[utastsok]]
end select

A tesztkifejezs rtktl fggen hajtja vgre az utastsokat. A kifejezslista egymstl vesszvel elvlasztott kifejezseket (rtkeket) tartalmazhat. Csak az elsknt megfelel case g utastsai kerlnek vgrehajtsra.
A select case utastsok egymsba gyazhatk.

Ciklusok
Szmlls ciklus
for szmll = kezdrtk to vgrtk [step lpskz]
[utastsok]
[exit for]
[utastsok]
next

Megismtli a ciklusmag utastsait. Ha nem adjuk meg a lpskz rtkt, akkor egyesvel lpteti a ciklusszmllt. A
lpskz lehet trtszm, illetve negatv rtk is (visszafel szmll). Az ismtls felttele:
lpskz 0
ismtls, ha szmll vgrtk
lpskz < 0
ismtls, ha szmll vgrtk
A fornext utastsok egymsba gyazhatk, de egymstl klnbz ciklusszmllkat kell alkalmazni.
Ciklus itertorral
for each elem in tmb
[utastsok]
[exit for]
[utastsok]
next

A tmb sszes elemre vgrehajtja a ciklust. A ciklusban az elem vltozval hivatkozhatunk a tmbelemekre.
Megjegyzs
A for each utastst alkalmazhatjuk az objektumokbl ll kollekcik elemeire is.
Feltteles ciklus
Elltesztel ciklus ismtlsi felttellel:

Htultesztel ciklus ismtlsi felttellel:

do while felttel
[utastsok]
[exit do]
[utastsok]
loop

do
[utastsok]
[exit do]
[utastsok]
loop while felttel

Elltesztel ciklus kilpsi felttellel:

Htultesztel ciklus kilpsi felttellel:

do until felttel
[utastsok]
[exit do]
[utastsok]
loop

do
[utastsok]
[exit do]
[utastsok]
loop until felttel

A felttel teljeslstl fggen hajtja vgre a ciklust. A while az ismtlsi felttelt (amg), az until pedig a kilpsi
felttelt (mgnem) jelzi.
Folyamatjelz az llapotsorban
Az interpreter csak a szkript vgrehajtsa utn jelenti meg az outputot az ablakban. A vgrehajts sorn az llapotsor
tartalmt hasznlhatjuk llapotjelzsre. Az llapotsor szvege a window.status 8 rtkadsval adhat meg.
A kvetkez ciklus pldul kirja a ciklusvltoz rtkt az llapotsorba:
for i= 1 to 10000
window.status=i
next

Az llapotsor hasznlata jelents mrtkben lelasstja a program futst.

A window objektum status tulajdonsga.

Juhsz Tibor: Visual Basic Script programozsi tmutat

14

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Hossz ciklusok lelltsa


Hossz ciklusok esetn megtrtnhet, hogy az interpreter figyelmeztet a vgrehajts elhzdsra. A program futtatsa
a Nem gombra kattintssal folytathat.

zenet hossz ideig fut ciklus esetn (hta, illetve htm)


Ha a program mg az ablak megjelentse eltt vgtelen ciklusba kerl, akkor a Feladatkezelben az mshta folyamatot
kell lelltanunk:

Az mshta.exe a Feladatkezelben

Egyb utastsok
DEBUG.WRITE
debug.write sztring1, sztring2,

Elkldi a debuggernek a sztringeket. Csak hibakeres zemmdban van hatsa.


DEBUG.WRITELN
debug.writeln sztring1, sztring2,

Soremelssel kldi el a debuggernek a sztringeket. Csak hibakeres zemmdban van hatsa.


EXECUTE
execute sztringkifejezs

Vgrehajtja a sztringknt megadott utastsokat. Tbb utastst kettsponttal kell elvlasztani egymstl. Az "x=y"
sztringet az execute rtkad utastsknt, az eval fggvny pedig relciknt rtelmezi.
RANDOMIZE
randomize

Inicializlja a vletlenszm-genertort (rnd). Hasznlata nlkl az rnd mindig ugyanazt a vletlenszm-sorozatot lltja
el.
STOP
stop

Felfggeszti a program vgrehajtst. Debugger program teleptse esetn tadja a vezrlst a hibakeresnek, gy hatsa
megegyezik egy trspont elhelyezsvel.

Juhsz Tibor: Visual Basic Script programozsi tmutat

15

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

WITH
with objektumnv
utastsok
end with

Az objektum tulajdonsgaira s metdusaira az objektumnv elhagysval hivatkozhatunk.


A With utastsok egymsba gyazsa esetn a bels blokkban ki kell rni a kls blokk ltal hivatkozott objektum nevt.

Fggvnyek s eljrsok
Eljrsok definilsa s hvsa
sub 9 nv[(paramter1, paramter2, )]
[utastsok]
[exit sub]
[utastsok]
end sub

A paramterek tpusval kapcsolatban lsd: A fggvnyek s eljrsok paramterei.


Az eljrsban deklarlt vltozk loklisak az eljrsra nzve.
Eljrst csak globlis szkriptben definilhatunk (msik eljrsban vagy fggvnyben nem).
Egy eljrst ktflekppen hvhatunk meg:

eljrsnv paramter1, paramter2,


call eljrsnv(paramter1, paramter2, )

A paramtereket az els esetben nem szabad zrjelbe tenni, a msodik esetben ktelez zrjelbe tenni.

Fggvnyek definilsa s hvsa


function nv[(paramter1, paramter2, )]
[utastsok]
[nv = kifejezs]
[exit function]
[utastsok]
[nv = kifejezs]
end function

A paramterek tpusval kapcsolatban lsd: A fggvnyek s eljrsok paramterei.


A fggvnyben deklarlt vltozk loklisak a fggvnyre nzve.
Fggvnyt csak globlis szkriptben definilhatunk (msik fggvnyben vagy eljrsban nem).
Ha a fggvnytrzsben nem szerepel a fggvnynvnek rtket ad utasts, akkor a visszatrsi rtk numerikus esetben 0, sztringek esetn pedig res sztring ("").
A fggvny hvsa a fggvny nevvel s zrjelben az aktulis paramterek felsorolsval trtnik.
A fggvnyeket az eljrshvsnak megfelel szintaxissal eljrsknt is meghvhatjuk:

fggvnynv paramter1, paramter2,


call fggvnynv(paramter1, paramter2, )

Ekkor az interpreter figyelmen kvl hagyja a visszatrsi rtket (lsd pldul az msgbox hasznlatt).

A fggvnyek s eljrsok paramterei


rtk szerinti paramtertads: byval vltoznv
Cm szerinti paramtertads: byref vltoznv
Az alaprtelmezett md a cm szerinti paramtertads, gy a byref kulcssz elhagyhat. A byval kulcsszt minden rtk
szerint hvott vltoz el ki kell tenni a paramterlistban.
A fggvnynek/eljrsnak gy adunk t tmbt, hogy a tmb nevt zrjelek s indexek nlkl rjuk a paramterlistba.
Az alprogramon bell a tmbelemek szmt az UBound fggvnnyel hatrozhatjuk meg.
Az interpreter a hatkonysg nvelse miatt a kirtkels eltt trendezheti a kifejezseket. Ezrt nem vrt eredmnnyel
jrhat, ha egy kifejezsben meghvott fggvny cm szerint tadott paramterei kztt szerepelnek a kifejezsben lv
vltozk.

Rekurzv alprogramok
A fggvnyekben s eljrsokban hasznlhatunk rekurzit.

A szubrutin (subroutine) rvidtse.

Juhsz Tibor: Visual Basic Script programozsi tmutat

16

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

sszetett adatszerkezetek
Tmbk
Tmbk deklarlsa
dim tmbnv(maxidex, maxindex, )

A tmb indexelse mindig 0-val kezddik. A deklarciban a maximlis index rtkt kell megadni. gy egy egydimenzis tmb elemeinek a szma: maxindex + 1. A maximlis index rtkt az UBound fggvnnyel krdezhetjk le.
Maximlisan 60 dimenzis tmbket deklarlhatunk.
A tmbelemek tetszleges (nem felttlenl egyforma) tpus vltozt tartalmazhatnak.
A hivatkozsnl a tmb indext kerek zrjelbe tesszk. Ha indexknt trtszmot adunk meg, akkor az interpreter a
legkzelebbi egszre kerekti.
A tmb sszes elemre vonatkoz ciklust itertorral egyszersthetjk.
A tmbelemek trlse
erase tmbnv

Az erase utasts numerikus rtkek esetn 0-val, sztringek esetn res sztringgel ("") tlti fel a tmbt.
Megjegyzs
Objektumhivatkozsokat tartalmaz tmb esetn a tmbelemek rtke Nothing lesz.
Tmbt tartalmaz vltoz
Egy vltoz tmbt is felvehet rtkknt. A tmb elemeire ugyangy hivatkozunk, mint a tmbknl. Pldul:
dim a(2), b
a(0)=0 : a(1)=1 : a(2)=2
b=a
msgbox b(0) & b(1) & b(2)

rtkads tbb dimenzis tmbt tartalmaz vltoznak pldul:


dim a(2, 2), b
a(1, 1)=5
b=a
msgbox b(1, 1)

Ha egy tmbelem kap rtkknt tmbt, akkor a kt tmb indext kln zrjelprok kz kell rni. Pldul:
dim a(2, 2), b(3)
a(0, 1)=5
b(2)=a
msgbox b(2)(0, 1)

rtkads az Array fggvnnyel


A tmbt tartalmaz vltoznak az Array fggvnnyel adhatunk egyszeren rtket.
array(rtk, rtk, )

Pldul:
dim a
a=array(0, 1, 2)
msgbox a(0) & a(1) & a(2)

Tmbelem esetn pldul:


dim a(2)
a(1)=array(0, 1, 2)
msgbox a(1)(0) & a(1)(1) & a(1)(2)

Tbb dimenzi esetn pldul:


dim a
a=array(array(0, 1, 2), array(3, 4, 5))
msgbox a(1)(2)

Lsd mg: IsArray fggvny.

Juhsz Tibor: Visual Basic Script programozsi tmutat

17

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Dinamikus tmbk
A VBScript lehetv teszi dinamikus tmbk hasznlatt, melyek mrete (s dimenziszma) a futtats sorn mdosthat. A dinamikus tmb trlhet is, gy a helye felszabadul a memriban.
Dinamikus tmb deklarlsa
A deklarciban nem adjuk meg a maximlis index rtkt, csak res zrjelprt hasznlunk:
dim tomb()

Dinamikus tmb hasznlata


Mieltt mg hivatkozunk a tmbre (tmbelemekre), a ReDim utastssal meg kell adnunk a tmb mrett:
redim tomb(maxindex)

A maxindex tetszleges kifejezs lehet, amely nem negatv szmot eredmnyez. Trtszm esetn az interpreter kerekt.
A ReDim utastssal a dimenziszmot is megvltoztathatjuk, pldul:
dim tomb()
redim tomb(6, 7)
...
redim tomb(4)

Ha fel akarjuk szabadtani a tmb ltal elfoglalt memrit, akkor 1-et adjunk meg paramternek:
redim tomb(1)

Ekkor a tmb csak egy jabb ReDim utasts vgrehajtsa utn hasznlhat.
A ReDim utasts trli a tmb elemeit! Ha meg akarjuk rizni az addigi rtkeket, akkor adjuk meg az utastsban a
Preserve kulcsszt:
redim preserve tomb(maxindex)

A tmbmret cskkentsekor termszetesen mindenkppen vesztnk elemeket.


A Preserve hasznlata esetn nem vltoztathatjuk meg a dimenziszmot, s egy tbbdimenzis tmbnl csak az utols
dimenzi mrete mdosthat, pldul:
redim tomb(4, 5, 6)
...
redim preserve(4, 5, 10)

A tmb teljes egszben az Erase utastssal trlhet a memribl:


erase tomb

A tmb neve utn nem rhatunk zrjeleket. Az Erase utastssal trlt tmbre tbb nem adhatjuk ki a ReDim utastst.

Objektumok
A Visual Basic Script objektumalap programozsi nyelv. Ltre lehet hozni objektumokat, de nem ismeri az rklst. A
VBScript kdokban elrhetjk a weblapot alkot objektumok tulajdonsgait s metdusait is (Dokumentum Objektum
Modell). Ez utbbiak rszletes ismertetst megtalljuk a Microsoft Development Network webhelyn.
Az objektumok ltrehozsnak, kezelsnek mdjt a [3] irodalomban olvashatjuk. Itt csak azokat az ismereteket foglaljuk ssze, melyekre a tovbbiakban szksgnk lesz.
Objektumosztlyok definilsa
Az objektumosztly defincijt a globlis szkriptben kell elhelyezni. A tulajdonsgokat (attribtumokat, vltozkat) s
metdusokat a Class End Class utastsok kz zrjuk:
class osztlynv
vltozk deklarlsa
metdusok definilsa
end class

Kln korltozs nlkl az osztlyok vltozi nyilvnos elrsek (Public).


Objektumok ltrehozsa s megszntetse
j objektumot ltalban a New opertorral hozunk ltre, s a Set utastssal rendeljk hozz egy vltozhoz:
dim vltoznv
set vltoznv = new osztlynv

Az utastsokban szerepl vltoz gynevezett objektum-hivatkozs (mutat), teht az objektum memriabeli helyre
mutat. gy ugyanazon objektumhoz tbb hivatkozst is hozzrendelhetnk.
Az objektumot gy szntetjk meg, hogy a Nothing rtket rendeljk az objektum-hivatkozshoz:
set vltoznv = nothing

Ha egy objektumra tbb vltoz hivatkozik, akkor az objektum csak akkor sznik meg, ha mr egyetlen hivatkozs sem
mutat r.

Juhsz Tibor: Visual Basic Script programozsi tmutat

18

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A New opertor helyett objektumokat ltrehoz eljrsok, metdusok is szerepelhetnek a Set utastsban (lsd ksbb).
Hivatkozs az objektumok tulajdonsgaira s metdusaira
A tulajdonsgokra (attribtumokra) s metdusokra az objektumvltoz nevvel minstve hivatkozunk:
vltoznv.tulajdonsgnv
vltoznv.metdusnv(paramter, paramter, )

A hivatkozst a With End With utastssal egyszersthetjk:


with vltoznv
.tulajdonsgnv =
utastsok
end with

A With-ben megadott objektum-hivatkozst a With s az End With kztt nem kell kirni a tulajdonsgok s metdusok
el (a pontot viszont nem hagyhatjuk el).
A With utastsokat egymsba gyazhatjuk, de mindig csak a legutoljra megnyitott (s le nem zrt) With vltozja
hagyhat el a minstsbl.
Kollekcik
Kollekciknak nevezzk az objektumokat tartalmaz specilis tmbket. A kollekci maga is objektum, rendelkezik
tulajdonsgokkal s metdusokkal. A legtbb kollekcinl megtalljuk pldul a Length tulajdonsgot, amely megadja
a kollekci elemeinek (a benne lv objektumoknak) a szmt:
kollekcinv.length

A kollekci elemeire (a benne lv objektumokra) azonostjukkal vagy indexkkel hivatkozhatunk:


kollekcinv(index)

A kollekci elemeinek indexelse 0-tl Length1-ig tart.


A kollekci elemeit knyelmesen feldolgozhatjuk a For Each ciklussal.
Kollekcik segtsgvel hatkonyan kezelhetjk a HTML-kd objektumait (lsd a [3] irodalomban).
A kollekcik tulajdonsgait s metdusait a fjlkezelsnl ismertetjk.

Asszociatv tmbk
Az asszociatv tmbk elemeit nvadat prok alkotjk, ahol a nv minden prra egyedi rtk a tmbn bell (kulcs).
Kt klnbz elemnl nem lehet azonos a kulcs rtke. Egybknt a nevet s az adatot tetszleges tpus vltozk,
akr tmbk is alkothatjk.
Megjegyzs
Az albbiakban csak nagyon rviden tekintjk t az asszociatv tmbkre vonatkoz tudnivalkat. Az rdekldk figyelmbe ajnljuk a [3] irodalmat, amely rszletes pldkon keresztl mutatja be a sztrobjektumok hasznlatt.
Asszociatv tmb ltrehozsa
Asszociatv tmbt a Dictionary (sztr) objektummal hozhatunk ltre. A tmbre, mint objektumra egy objektumvltozval hivatkozhatunk.
set tmbnv = createobject("scripting.dictionary")

Asszociatv tmbk kezelse


Asszociatv tmbt az Add metdussal bvthetnk. Paramterknt megadjuk a kulcs s az adat rtkt:
tmbnv.add kulcs, adat

A tmbben az elemek a bevitel sorrendjben helyezkednek el.


Megadott kulcs ltezst az Exists metdussal tudjuk ellenrizni, melynek visszatrsi rtke true vagy false:
tmbnv.exists(kulcs)

Az asszociatv tmb elemszmt a Count tulajdonsg adja meg:


tmbnv.count

Mivel a tmb indexelse 0-val kezddik, a maximlis index eggyel kisebb, mint a Count rtke.
A Remove metdus trli a kulcsnak megfelel elemet a tmbbl:
tmbnv.remove(kulcs)

A RemoveAll metdus a tmb sszes elemt trli:


tmbnv.removeall()

A tmb elemeire az Item fggvnnyel hivatkozhatunk, melynek paramtere a keresett adat kulcsa:
tmbnv.item(kulcs)

A fggvny rtke a megadott kulcshoz tartoz adat.


Az Item metdussal mdostani tudjuk a kulcshoz tartoz adatot:
tmbnv.item(kulcs)=kifejezs

Juhsz Tibor: Visual Basic Script programozsi tmutat

19

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Ha a kulcs nem tallhat meg a tmbben, akkor az rtkad utasts bal oldaln lv kulcs a kifejezs rtkvel bekerl
a tmbelemek kz! Ez a bvts egyenrtk az Add metdussal.
Ha az Item egy kifejezsben szerepel, de kulcs paramtere mg nincs benne a sztrban, akkor ltrejn egy j elem az
adott kulccsal s res (Empty) rtkkel.
Az Item kirsa elhagyhat, gy a tmb elemeit a kulcsokkal indexelhetjk:
tmbnv(kulcs)

A
tmbnv(kulcs) = rtk

utasts megvltoztatja a kulcshoz tartoz rtket, ha mr ltezik, s felveszi a kulcsrtk prt, ha mg nem ltezik.
A tmbelemek elrshez knyelmesen hasznlhat a For Each ciklus, amely sorra tadja a tmb kulcsait a ciklusvltoznak:
for each elem in tmbnv
utastsok az elem vltozval
next

A kulcs rtkt a Key metdussal mdosthatjuk:


tmbnv.key(a kulcs rgi rtke) = a kulcs j rtke

Halmazok
A VBScript kzvetlenl nem rendelkezik a halmaz adattpussal. A halmaz azonban helyettesthet olyan asszociatv
tmbbel, amelynl a kulcsok jelentik a halmaz elemeit, a hozzjuk tartoz rtkeket pedig resen hagyjuk.
Pldaknt bemutatjuk a h1 s h2 halmaz metszetnek kialaktst asszociatv tmbk segtsgvel:
for each kulcs in h1
if h2.exists(kulcs) then
temp=metszet.item(kulcs)
end if
next

A pldban kihasznltuk, hogy ha az Item metdus hvsa egy kifejezsben szerepel, akkor ltrejn a tmb eleme az
adott kulccsal.

Rekordok
A rekordokat objektumokkal valsthatjuk meg. Az objektumok teljes mrtkben helyettestik ezt az adatszerkezetet
(st, sokkal tbb clra alkalmazhatk). Ha csak a rekord-adatszerkezetet akarjuk ltrehozni, akkor leegyszersthetjk
az objektumok kezelst.
A rekordtpus definilsa osztlydefincival trtnik, amelyben felsoroljuk a rekord mezit:
class rekordtpus
dim meznv1, meznv2, ...
end class

A vltozkhoz hasonlan a mezk tpust sem lehet megadni.


Egy rekord ltrehozsa a New opertorral trtnik (dinamikus memriahasznlat). A rekordot a Set utastssal rendeljk
hozz egy vltozhoz:
dim rekordnv
...
set rekordnv = new rekordtpus

A rekordnv valjban egy mutat, amely a rekord cmt tartalmazza a memriban.


A mezk rtkadsnl a rekord (objektum) nevt hasznljuk minstknt:
rekordnv.meznv = kifejezs

A mezhivatkozst a With utastssal rvidthetjk:


with rekordnv
.meznv1 = ...
...
end with

A rekordok mezi (az objektumok vltozi) tmbket (s objektumokat) is tartalmazhatnak.


A rekord automatikusan eltnik a memribl, mihelyt megszntetjk a r mutat hivatkozst (pldul egy msik rekordra lltjuk t). Explicit mdon a rekordot gy szntetjk meg, hogy Nothing-et rendelnk a mutathoz:
set rekordnv = nothing

A rekordok hasznlatt rszletesen a [3] irodalom mutatja be.

Juhsz Tibor: Visual Basic Script programozsi tmutat

20

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Megjegyzs
Br a mutatk hasznlata nem ignyli a Pascalban megszokott megklnbztetst, mgis vatosan kell bnnunk vele.
Egy rekordokat tartalmaz tmb elemeinek cserjnl, lptetsnl knnyen elveszthetjk a rekordra mutat hivatkozst, ha nem a megfelel sorrendben vgezzk a hivatkozsok mdostst. Rszletesebben lsd a [3] irodalomban.

Hibakezels
Kivtelkezels
A VBScript ersen korltozott kivtelkezelsi lehetsggel rendelkezik. Az On Error Resume Next utastssal kikapcsolhatjuk az interpreter hibakezelst. Az interpreter futsi hiba jelzse nlkl abbahagyja a hibt okoz utasts vgrehajtst, s rtr a kvetkez utasts rtelmezsre.
Az On Error Resume Next utastst ltalban azon utasts el helyezzk, amely hibt okozhat. A hiba bekvetkezst
az Err.Number vltoz nulltl klnbz rtke jelzi. A vgrehajts utn az On Error Goto 0 utastssal clszer viszszakapcsolni az interpreter hibakezelst. Pldul:
on error resume next
tort=szamlalo/nevezo
if err.number <>0 then
msgbox "A nevez nulla!"
end if
on error goto 0

Az On Error Resume Next hatsa akkor is megsznik, ha kilpnk egy eljrsbl vagy fggvnybl, illetve meghvunk
egy jabb eljrst/fggvnyt.
Az On Error Resume Next utastst leggyakrabban fjlkezelskor vagy adatbeolvasskor hasznljuk.
Megjegyzs
Az On Error Goto 0 utasts nem ugrik sehova, csak visszakapcsolja az interpreter hibakezelst.
Az Err.Number valjban az Err-objektum Number tulajdonsga. Az objektum tovbbi tulajdonsgai:
Description: a hiba lerst tartalmaz sztring.
Source:
a hibt okoz objektum. A szkriptek futtatsnl ez a VBScript interpretere.

Hibakezels esemnykezelssel
Egy hiba bekvetkezsekor ltrejn az onerror esemny, melyhez esemnykezel eljrst kszthetnk. gy a hibt az
eljrsban kezelhetjk. Az onerror hasznlatt a [3] irodalom ismerteti rszletesen.

Fjlkezels
A fjlrendszer kezelse
A VBScript a httrtrakat, mappkat, fjlokat objektumknt kezeli 10 . Tulajdonsgaikra a kvetkezkppen hivatkozhatunk:
objektumnv.tulajdonsgnv

A fjlrendszerobjektum
Az objektumok elrshez elszr ltre kell hozni egy fjlrendszerobjektumot. Az objektumot a Set utastssal rendeljk hozz egy vltozhoz 11 :
set vltoznv = createobject("scripting.filesystemobject")
Drive

meghajt, belertve a klnbz httrtrakat s a hlzati meghajtkat

Drives

a szmtgphez csatlakoz meghajtk kollekcija

File

fjl

Files

a mappa ltal trolt fjlok kollekcija

Folder

mappa

Folders

a mappa almappinak kollekcija

TextStream

szveges fjl
A fjlrendszer objektumai

10
11

Ehhez a Script Runtime osztlyknyvtr File System Object (fjlrendszerobjektum) modelljt hasznlja.
A vltoz az objektumra mutat hivatkozst tartalmaz.

Juhsz Tibor: Visual Basic Script programozsi tmutat

21

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A fjlrendszerobjektum szoksos elnevezse: FSO. A tovbbiakban mi is gy hivatkozunk r.


A mr nem hasznlt objektumot clszer a Nothing segtsgvel trlni:
set objektumnv = nothing

A fjlrendszer objektumain a metdusok segtsgvel hajtunk vgre mveleteket. Az objektum metdusa a klasszikus
nyelvek eljrsnak, illetve fggvnynek felel meg, csak hvsakor elje rjuk az objektum nevt:
objektumnv.metdusnv(paramterek)

Az egyes meghajtkat a fjlrendszerobjektum GetDrive metdusval rendeljk hozz az objektumra mutat vltozhoz:
set vltoznv = fso.getdrive("nv")

A nv lehet egy meghajt betjele (kettsponttal vagy anlkl), illetve egy hlzati mappa elrsi tja
(\\szmtgpnv\megosztsnv).
DriveLetter

a meghajt betjele kettspont nlkl

Drives

a szmtgphez csatlakoz meghajtk kollekcija

DriveType

a meghajt tpusa

FreeSpace

a szabad terlet mrete bjtban

IsReady

a httrtr kszenlti llapott jelz logikai rtk

Path

a meghajt betjele kettsponttal (elrsi t)

RootFolder

a gykrknyvtr elrsi tja

TotalSize

a httrtr teljes kapacitsa bjban

VolumeName

ktetcmke

A meghajtobjektumok tulajdonsgai s kollekcii


A ktetcmke rhat/olvashat, a tbbi tulajdonsg csak olvashat. A tulajdonsgokat csak akkor rjk el, ha az objektum IsReady tulajdonsga True rtk. Egybknt hibazenetet kapunk.
A c: meghajt tulajdonsgainak lekrdezse pldul:
set fso = createobject("scripting.filesystemobject")
set merevlemez = fso.getdrive("c:")
if not merevlemez.isready then
document.write "llapot: nem olvashat."
else
document.write "Ktetcmke: " & merevlemez.volumename & "<br>"
document.write "Mret: " & merevlemez.totalsize & " bjt<br>"
document.write "Szabad hely: " & merevlemez.freespace & " bjt<br>"
document.write "Gykrknyvtr: " & merevlemez.rootfolder
end if
set merevlemez = nothing
set fso = nothing

A mappaobjektumok
A mappaobjektumok elrshez a mappt az FSO-objektum GetFolder metdusval hozz kell rendelni egy vltozhoz:
set vltoznv = fso.getfolder("elrsi t")
Files

a mappa sszes llomnyt tartalmaz kollekci

IsRootFolder

logikai rtk, a gykrknyvtr esetn True, egybknt False

Name

a mappa neve (rhat)

ParentFolder

a szl mappaobjektum (!)

Path

a mappa teljes elrsi tja

Size

a mappa mrete az almappkkal egytt

SubFolders

az almappkat tartalmaz kollekci


A mappaobjektumok s kollekciik

A Files s SubFolders kollekcik elemszmt a Count tulajdonsg rtke adja meg.

Juhsz Tibor: Visual Basic Script programozsi tmutat

22

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

CopyFile

fjl msolsa

CopyFolder

mappa msolsa

CreateFolder

mappa ltrehozsa

DeleteFile

fjl trlse

DeleteFolder

mappa trlse

FolderExists

True, ha ltezik a paramterknt megadott mappa

GetFile

fjl hozzrendelse egy vltozhoz

GetFolder

mappa hozzrendelse egy vltozhoz

MoveFile

fjl mozgatsa

MoveFolder

mappa mozgatsa

Az FSO-objektum mappkra s fjlokra vonatkoz metdusai


A c:\windows mappa tulajdonsgainak kirsa pldul:
set fso = createobject("scripting.filesystemobject")
set mappa = fso.getfolder("c:\windows")
with mappa
document.write "Nv: " & .name & "<br>"
document.write "Elrsi t: " & .path & "<br>"
document.write "Szl mappa: " & .parentfolder & "<br>"
document.write "Teljes mret (almappkkal): " & .size & "<br>"
document.write "Almappk szma: " & .subfolders.count & "<br>"
document.write "Fjlok szma: " & .files.count
end with
set fso = nothing
set mappa = nothing

A kvetkez utastsok ltrehozzk a c:\Gyakorls mappt, s hozzrendelik a Mappa nev vltozhoz:


if fso.folderexists("c:\gyakorls") then
document.write "Mr ltezik ilyen mappa."
set mappa = fso.getfolder("c:\gyakorls")
else
set mappa = fso.createfolder("c:\gyakorls")
document.write "Elkszlt a mappa."
end if

A fjlobjektumok
A fjlobjektumok elrshez az llomnyt az FSO GetFile metdusval hozz kell rendelni egy vltozhoz:
set vltoznv = fso.getfile("elrsi t")
DateCreated

a ltrehozs ideje

Name

a fjl neve (rhat)

ParentFolder

a fjl mappja

Path

a fjl teljes elrsi tja

Size

a fjl mrete bjtokban


a fjlt tpusnak megnevezse
(megfelel az Intz Tpus oszlopban feltntetett sztringnek)

Type

A fjlobjektumok legfontosabb tulajdonsgai


A Windows mappban lv fjlok listzsa.
set fso = createobject("scripting.filesystemobject")
set mappa = fso.getfolder("c:\windows")
document.write "A fjlok szma: " & mappa.files.count & "<br>"
for each fajl in mappa.files
document.write fajl.name & " (" & fajl.size & " bjt, " & _
fajl.datecreated & ", " & fajl.type & ")<br>"
next
set mappa = nothing : set fso = nothing

Juhsz Tibor: Visual Basic Script programozsi tmutat

23

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Az aktulis mappa kijellsvel elkerlhetjk a teljes elrsi t hasznlatt. Az aktulis mappt a Windows Scripting
Host szolgltats Shell objektumnak CurrentDirectory metdusval kaphatjuk meg:
dim kornyezet, aktualismappa
set kornyezet = createobject("wscript.shell")
aktualismappa = kornyezet.currentdirectory

Az aktulis mappa rtkt meg is vltoztathatjuk.

Szvegfjlok kezelse
A VBScript kzvetlenl csak szvegfjlokat (szekvencilis fjlokat) tud ltrehozni, rni, olvasni. Binris fjlokat az Asc
s a Chr fggvnyek segtsgvel kezelhetnk.
A fjlt a hasznlat eltt meg kell nyitni, a hasznlat utn pedig le kell zrni. A megnyits trtnhet olvassra, rsra,
illetve hozzfzsre. rs esetn a fjl elz tartalma elvsz.
A fjl megnyitst az FSO-objektum OpenTextFile, lezrst pedig a Close() metdusval vgezzk:
set vltoznv = fso.opentextfile(nv, md, ltrehoz, kd)

Az egyes paramterek jelentse:


nv:
a fjl elrsi tja s neve;
md:
megnyits olvassra (1), rsra (2) vagy hozzfzsre (8);
ltrehoz: True, ha nem ltez nv esetn hozza is ltre a fjlt;
kd:
Unicode esetn True, ANSI kd esetn False.
AtEndOfLine

True, ha elrtk egy sor vgt

AtEndOfStream

True, ha elrtk a fjl vgt

ReadLine()

beolvas egy sort

ReadAll()

beolvassa a fjl teljes tartalmt

Read(n)

beolvas n darab karaktert

Skip(n)

tlp (kihagy) n darab karaktert

SkipLine()

kihagy egy egsz sort

Write(sztring)

kirja a fjlba a sztring karaktereit

WriteLine(sztring)

kirja a fjlba a sztringet s egy sorvge jelet

A szvegfjlobjektum legfontosabb tulajdonsgai s metdusai


A kvetkez programrszlet a Gyakorls mappban ltrehoz egy szvegfjlt, s beler egy sort:
fajl = "c:\gyakorls\szveg.txt"
set fso = createobject("scripting.filesystemobject")
if fso.fileexists(fajl) then
document.write "A ltez fjl megnyitsa hozzfzsre."
set fajl = fso.opentextfile(fajl, 8, false)
else
document.write "A fjl ltrehozsa s rsa"
set fajl = fso.opentextfile(fajl, 2, true)
end if
fajl.writeline("Ez lesz a fjl tartalma.")
fajl.close()
set fajl = nothing
set fso = nothing

A kvetkez programrszlet beolvassa s kirja az elbbi szvegfjlt:


ut = "c:\gyakorls\szveg.txt"
set fso = createobject("scripting.filesystemobject")
if not fso.fileexists(ut) then
document.write "Nem ltezik a fjl."
else
set fajl = fso.opentextfile(ut, 1)
do while not fajl.atendofstream
document.write fajl.readline() & "<br>"
loop
fajl.close()
set fajl = nothing
end if
set fso = nothing

Juhsz Tibor: Visual Basic Script programozsi tmutat

24

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Vltozk beolvassa
Ha az adatfjl egy sorban tbb numerikus vltoz szerepel, akkor a beolvassnl a Split fggvnnyel tudjuk az egyes
rtkeket sztvlasztani. 12 A kvetkez programrszlet beolvas egy fjlt, melynek minden sora hrom numerikus rtket tartalmaz 13 . A szmokat egyetlen szkz vlasztja el egymstl.
dim adat(100,2)
...
n = 0
ut = "c:\gyakorls\adatok.txt"
set fso = createobject("scripting.filesystemobject")
set fajl = fso.opentextfile(ut, 1)
do while not fajl.atendofstream
sor = fajl.readline()
n = n + 1
temp = split(sor, " ")
for i = 0 to 2
adat(n,i)=csng(temp(i))
next
loop
fajl.close()
set fajl = nothing
set fso = nothing

A Split hasznlatt elkerlhetjk, ha a kirsnl minden egyes rtket j sorba rnunk.

Hibakezels a fjlmveleteknl
A fjlokra vonatkoz mveletek sorn az On Error Resume Next utastssal clszer kikapcsolni az interpreter hibakezelst. Ha az Err-objektum Number tulajdonsga nulla, akkor hibtlanul vgrehajtsra kerlt a fjlra vonatkoz utasts. gy elkerlhetjk a futsi hibt. Az interpreter hibakezelst az On Error Goto 0 utastssal kapcsoljuk vissza 14 .
A kvetkez plda futsi hiba nlkl prbl megnyitni olvassra egy fjlt a flopin:
const ut = "a:\adatok.txt"
set fso = createobject("scripting.filesystemobject")
on error resume next
if not fso.getdrive("a:").isready then
document.write "Nem hasznlhat a meghajt."
else
set fajl = fso.opentextfile(ut, 1)
if err.number <> 0 then
document.write "Nem nyithat meg a fjl."
set fajl = nothing
else
document.write "Megnyitottam a fjlt."
end if
end if
on error goto 0
tovbbi utastsok

12

A Split visszatrsi rtke dinamikus tmb.


Az adat-tmb 0 index elemt nem hasznljuk fel.
14
Az On Error Goto 0 nem ugrik sehova, egyszeren csak visszakapcsolja a hibakezelst.
13

Juhsz Tibor: Visual Basic Script programozsi tmutat

25

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Programozsi ttelek megvalstsa VBScriptben


A programozsi tteleket eljrsokkal valstottuk meg. A keretprogram az adatokat kszti el, s az eredmnyeket rja
ki. A megjelentsnl trekedtnk az egyszersgre, nem alkalmaztuk a grafikus felhasznli fellet objektumait.
A programozsi ttelek sorozatainak elemeit a tomb, tomb1, tomb2 tmbk tartalmazzk. A tmbk 0 index elemt
nem hasznltuk fel.
ltalban elkerltk az ubound fggvny alkalmazst, a tmbk elemszmt paramterknt adtuk t az eljrsoknak.
Tmbt tartalmaz vltozt, illetve dinamikus tmbt csak korltozottan hasznltunk.
A programozsi ttelek algoritmusait [6] s [7] alapjn kdoltuk. Ettl csak szksg esetn, pldul a logikai kifejezsek rvidre zrsnak hinya miatt trtnk el.
A programokra mutat albbi hivatkozsok csak akkor mkdnek, ha jelen pdf dokumentum knyvtrban
helyezkedik el a pldafjlokat tartalmaz prttelek mappa.
A PrTtelek mappban a keretprogramokat, Sub almappjban pedig az eljrsokat talljuk. Az eljrsok kdjt csatoltuk a keretprogramhoz (lsd: kd csatolsa). Gyakran fggvny helyett is eljrst ksztettnk (pldul eldnts).
Az eljrsokban nem hasznltuk fel a 0 index tmbelemet, teht a
dim a(n)

esetn az n a tmbelemek szmt jelenti.


A Visual Basic Scriptben az eljrshvsnl a cm szerinti paramtertads az alaprtelmezett md. Ettl fggetlenl az
eljrsok kimeneti vltozinl kirtuk a ByRef kulcsszt, hogy kiemeljk a paramter megvltozst.

Az indexhatr tllpse
A programozsi ttelek szoksos megfogalmazsa felhasznlja a logikai mveletek rvidrezrst. A rvidzr nagymrtkben leegyszersti az algoritmust, br didaktikai szempontbl nem clszer az alkalmazsa. A VBScript nem ismeri a
rvidzrat. A rvidzr hinyt s annak feloldst az eldnts algoritmusn szemlltetjk.
A tomb nev vltoz 1-tl 10-ig tartalmazza a termszetes szmokat (a 0 index elemet nem hasznljuk fel):
tomb=array(, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Vizsgljuk meg, hogy az elemek kztt van-e 11-gyel oszthat szm! Az algoritmus szoksos kdolsa:
n=10
i=1
do while i<=n and tomb(i) mod 11 <> 0
i=i+1
loop
van=(i<=n)

Ez a megolds VBScriptben futsi hibhoz vezet, mert a ciklus utols ismtlsnl az i rtke mr 11 gy a tomb(i)
hivatkozs kvl esik az indexhatron.
1. mdszer: A felttelek kettvlasztsa
A futsi hibt a felttelek kettvlasztsval kerlhetjk el, amihez bevezetnk egy logikai vltozt:
n=10
i=1
oszthato = false
do while i<=n and not oszthato
oszthato = (tomb(i) mod 11 = 0)
i=i+1
loop
van=oszthato ' Ha van, akkor az i-1 index elem rendelkezik az adott tulajdonsggal!

2. mdszer: A ciklus korbbi befejezse


A futsi hibt a ciklus korbbi befejezsvel is elkerlhetjk. Ha a ciklust i<n-ig futtatjuk, akkor nem kerl sor az indexhatr tllpsre. Ekkor a kilps utn ismt el kell vgezni a vizsglatot:
n=10
i=1
do while i<n and tomb(i) mod 11 <> 0
i=i+1
loop
van=(tomb(i) mod 11 = 0)

A megolds htrnya, hogy kt helyre kell beilleszteni a vizsglatot, ami nem mindig clszer. Rontja a hatkonysgot
s a program ttekinthetsgt.

Juhsz Tibor: Visual Basic Script programozsi tmutat

26

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

3. mdszer: A tmb bvtse fiktv elemmel


Az eredeti algoritmust vltozatlan formban alkalmazhatjuk, ha a tmbt bvteni tudjuk egy n+1-edik elemmel:
tomb=array(, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0)
...
n=10
i=1
do while i<=n and tomb(i) mod 11 <> 0
i=i+1
loop
van=(i<=n)

Hangslyozzuk, hogy az utols elem rtke tetszleges lehet, hiszen i = 11 esetn az s mvelet bal oldala mr hamis
eredmnyre vezet, teht nem fut le a ciklus.

1. Elemi programozsi ttelek


1.1. Sorozatszmts
1.2. Eldnts
1.3. Kivlaszts
1.4. Lineris keress
1.5. Megszmlls
1.6. Maximumkivlaszts

2. sszetett programozsi ttelek


2.1. Msols
2.2. Kivlogats
2.3. Sztvlogats
2.4. Sztvlogats helyben
2.5. Metszet
2.6. Uni
2.7. Halmazfelsorols ksztse
2.8. sszefuttats
2.9. sszefuttats tkzvel (brmely numerikus rtk kisebb, mint egy sztring, lsd: Relcis opertorok)

3. Rendezsek
A rendezseket bemutat programok a tmbt vletlenszmokkal tltik fel. A program vgrehajtsa az F5 billentyvel
(frissts) ismtelhet meg.
3.1. Egyszer csers rendezs
3.2. Minimumkivlasztsos rendezs
3.3. Buborkos rendezs
3.4. Beillesztses rendezs
3.5. Sztoszt rendezs
3.6. Szmllva sztoszt rendezs
3.7. Szmll rendezs
3.8. Rendezs Shell-mdszerrel
3.9. Gyorsrendezs (quicksort)

4. Keressek
4.1. Keress rendezett sorozatban
4.2. Logaritmikus keress
4.3. Visszalpses keress
4.3. a) 8 vezr a sakktbln (grafikus megjelentssel)
4.3. b) A 8 vezr feladat sszes megoldsa
4.3. b) Nvekv sorozat kivlasztsa
A visszalpses keresst clszer egy olyan pldn bemutatni, amelynl knny ellenrizni a megoldhatsgot. A feladatban 6 szmsorozat kzl kell kivlasztani egyms utn egy-egy elemet gy, hogy a kivlogatott elemek nvekv sorozatot alkossanak.
A feladat ltvnyosabb megoldst lsd: [3].

Juhsz Tibor: Visual Basic Script programozsi tmutat

27

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Beptett fggvnyek
Matematikai fggvnyek
Argumentumuk ltalban egy numerikus kifejezs.
Abs(kifejezs)
abszoltrtk.
Atn(kifejezs)
arkusz tangens, radinban.
Cos(kifejezs)
a radinban megadott szg koszinusza.
Exp(kifejezs)
e alap hatvny. Tetszleges alap hatvnyozshoz hasznljuk a ^ opertort.
Hex(kifejezs)
a kifejezs legfeljebb 8 jegy hexadecimlis rtke (sztring).
Int(kifejezs)
a kifejezs egszrsze. Pldul: Int(-99,8) = -100.
Fix(kifejezs)
elhagyja a kifejezs trtrszt. Pldul: Fix(-99,8) = -99.
Log(kifejezs)
a kifejezs e alap logaritmusa (ln x). loga x = log(x)/log(a).
Rnd()
vletlenszm a [0; 1) intervallumban.
Round(kifejezs[, tizedes])
a numerikus rtket a megadott szm tizedesre kerekti. Ha a tizedes paramter hinyzik, akkor
egsz szmot kapunk. Az 5-t a legkzelebbi pros szmra kerekti.
Pldul: round(2,5) = 2, de round(3,5) = 4.
Sgn(kifejezs)
a kifejezs eljele. 1: negatv; 0: nulla; +1: pozitv.
Sin(kifejezs)
a radinban megadott szg szinusza.
Sqr(kifejezs)
a kifejezs ngyzetgyke.
Tan(kifejezs)
a radinban megadott szg tangense.

Sztringfggvnyek
A sztringeket sszehasonlt/keres fggvnyek md paramtere megadja az sszehasonlts mdjt.
md = 0: binris sszehasonlts. Megklnbzteti a kis- s nagybetket.
md = 1: szvegszer sszehasonlts. Nem klnbzteti meg a kis- s nagybetket.
A paramter alaprtelmezett rtke: 0, ezt nem ktelez kirni.
Asc(sztringkifejezs)
Az els bet ANSI kdja. Unicode esetn az Asc helyett hasznljuk az AscW fggvnyt!
Chr(kifejezs)
A kifejezsnek megfelel ANSI kd karakter. Unicode esetn hasznljuk a ChrW fggvnyt!
InStr(([start, ]sztring1, sztring2[, md])
Megkeresi a sztring2 els elfordulsnak pozcijt a sztring1-ben. Ha szerepel, akkor a start-nak megfelel
pozcitl kezdi a keresst. A visszatrsi rtk 0, ha
res a sztring1,
nem tallta meg a sztring2-t,
start > len(sztring2)
InStrRev(([start, ]sztring1, sztring2[, md])
Ugyanaz, mint az InStr, csak a sztring1 vgn kezdi a keresst.
Join(tmb[, hatrol])
A sztringeket tartalmaz tmb elemeibl kszt egyetlen sztringet. Az elemek kz beilleszti a hatrol sztringet.
Ha nem szerepel a hatrol paramter, akkor az elemek kz szkz kerl. Ha a hatrol paramter res sztring,
akkor hatrol sztring nlkl fzi ssze a tmb elemeit.
LCase(sztringkifejezs)
A sztring nagybetit kisbetkre vltja.
Left(sztring, hossz)
A sztring els hossz karaktert adja vissza.
Len(sztringkifejezs | vltoznv)
A sztring karaktereinek a szmt adja vissza.
LTrim(sztringkifejezs)
Elhagyja a sztring elejn ll szkzket.
Mid(sztring, start[, hossz])
A start pozcitl kezdve megadja a sztring hossz karakterbl ll rszt. Ha hinyzik a hossz paramter, akkor a
sztring vgig veszi a karaktereket. Ha a start nagyobb, mint a sztring hossza, akkor res sztringgel tr vissza.
Replace(sztringkifejezs, keres, helyettest[, start, darab[, md]])
A sztringkifejezsben a keres sztringet helyettesti a helyettest sztringgel. Ha szerepel a start paramter, akkor a
keresst a start pozcitl kezdi. Ekkor meg kell adnunk a helyettestsek darab szmt is! Ebben az esetben az
sszes rsz-sztring helyettestst a darab = -1 jelzi.

Juhsz Tibor: Visual Basic Script programozsi tmutat

28

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Right(sztring, hossz)
A sztring utols, hossz darab karaktert adja vissza.
RTrim(sztringkifejezs)
Elhagyja a sztring vgn lv szkzket.
Space(szm)
Megadott szm szkzt tartalmaz sztring.
Split(sztring[, hatrol[, darab[, md]]])
A sztringet a hatrol sztringeknl feldarabolja rsz-sztringekre, melyeket egy tmb elemeiknt ad vissza. Ha a
hatrol paramter hinyzik, akkor a szkzknl vgja el a sztringet. A darab paramterrel korltozhatjuk a
visszaadott sztringek szmt (a tmb mrett).
StrComp(sztring1, sztring2[, md])
A md=1 rtke mellett a magyar bcnek megfelel sszehasonltst vgez (de nem klnbzteti meg a
kisbetket s a nagybetket). A visszatrsi rtk:
-1 sztring1 < sztring2
0 sztring1 = sztring2
+1 sztring1 > sztring2
String(szm, karakter)
Szm-szor megismtli az adott karaktert.
StrReverse(sztring)
Megfordtja a sztringet.
Trim(sztringkifejezs)
Elhagyja a sztring elejn s vgn lv szkzket.
UCase(sztringkifejezs)
A sztring kisbetit nagybetkk konvertlja.

Dtum/id fggvnyek
Date()
megadja a rendszerdtumot.
DateAdd(intervallum, rtk, dtum)
A dtum sztringhez hozzadja az intervallum sztringnek megfelel rtk-et.
(Az rtk lehet negatv is.)
Intervallum: "yyyy": v, "m": hnap, "d": nap, "w": a ht napja,
"h": ra,"n": perc, "s": msodperc stb.
Pldul: DateAdd("m", 1, "96/01/31") = 1996. februr 29. (#1996/02/29#)
DateSerial(v, h, nap)
A numerikus kifejezsekbl (vagy konstansokbl) dtum tpus rtket kpez.
Pldul: DateSerial(1990-10, 8-2, 1-1)=1980. mjus 31. (#1980/05/31#)
DateValue(sztringkifejezs)
a dtumformtumnak megfelel sztringkifejezsbl dtum tpus rtket kpez.
Day(dtum)
a dtum napja. Pldul: Day(#1999/11/05#)=5
Hour(id)
az idpont rja.
Minute(id)
az idpont perce.
Month(dtum) a dtum hnapja.
MonthName(sorszm[, rvidt])
az adott sorszm hnap neve. Ha a rvidt igaz, akkor rvidti a hnapnevet.
A hnapneveket a terleti belltsoknak megfelel nyelven (teht pldul magyarul) rja ki.
Now()
megadja a rendszerdtumot s idt.
Second(id)
az idpont msodperce.
Time()
megadja a rendszeridt.
Timer()
az jfl ta eltelt id msodpercben, szzadmsodperc pontossggal. Futsi id mrsre hasznlhatjuk.
TimeSerial(ra, perc, msodperc)
a numerikus paramterekbl id tpus rtket kpez.
TimeValue(sztringkifejezs)
az idformtumnak megfelel sztringkifejezsbl id tpus rtket kpez.
Weekday(dtum[, kezdnap])
a ht napjnak sorszma. Kezdnap 1: vasrnap, 2: htf, , 7: szombat.
WeekdayName(sorszm, rvidts, kezdnap)
a ht adott sorszm napjnak a megnevezse a terleti belltsok szerinti nyelven (pldul magyarul). Ha a rvidts igaz, akkor rvidti a nevet. A kezdnap megfelel a Weekday fggvny paramternek.
Year(dtum)
a dtum ve.

Juhsz Tibor: Visual Basic Script programozsi tmutat

29

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Tpuskonverzis fggvnyek
CBool(kifejezs) 15
CByte(kifejezs)
CCur(kifejezs)
CDate(kifejezs)
CDbl(kifejezs)
CInt(kifejezs)
CLng(kifejezs)
CSng(kifejezs)
CStr(kifejezs)

logikai (False, ha a kifejezs rtke 0, egybknt pedig True)


bjt
pnznem
dtum
dupla pontossg vals
egsz
hossz egsz
egyszeres pontossg vals
sztring

Formtumfggvnyek
FormatCurrency(kifejezs, paramterek)
kirja a Terleti belltsoknak megfelel pnznem megjellst is. Paramterei megegyeznek a FormatNumber
paramtereivel.
FormatNumber(kifejezs, tizedesjegyek szma, vezet nulla, negatv zrjel, ezresek elvlasztsa)
kifejezs:
a formzsra kerl aritmetikai kifejezs;
tizedesjegyek szma:
a kirsra kerl tizedesjegyek szma. Szksg esetn nullkkal egszti ki. 1 esetn a
Terleti belltsoknl megadott rtket alkalmazza.
vezet nulla:
kirja-e a nulla egszet az 1-nl kisebb szmoknl;
negatv zrjel:
zrjelbe tegye-e a negatv szmokat;
ezresek elvlasztsa:
csoportostsa-e a Terleti belltsoknl megadott mdon az egszrsz szmjegyeit.
A hrom utols paramter rtke: 16
rtk
Konstans
Jelents
1
TristateTrue
igen (igaz),
0
TristateFalse
nem (hamis),
2
TristateUseDefault
a Terleti belltsokat veszi figyelembe.

Tesztfggvnyek
A tesztfggvnyek visszatrsi rtke logikai igaz (True) vagy hamis (False).
IsArray(vltoznv)
igaz, ha a vltoz tmb.
Azt vizsgljuk meg vele, hogy egy vltoz tmb vagy tmbt tartalmaz-e.
IsDate(kifejezs)
igaz, ha a kifejezs dtumm/idv konvertlhat.
IsEmpty(vltoznv)
igaz, ha a vltoz mg nem kapott rtket.
Az automatikus tpuskonverzi miatt a szoveg = "" akkor is igaz, ha a szoveg nev vltoz
mg nem kapott rtket.
IsNumeric(kifejezs)
igaz, ha a kifejezs szmm konvertlhat. Szmok beolvassnak ellenrzsre hasznljuk.

Egyb fggvnyek
Eval(sztringkifejezs)
RGB(vrs, zld, kk)
UBound(tmbnv[, dimenzi])

Kirtkeli a sztringknt megadott kifejezst.


Megadja a sznt reprezentl rtket. A paramterek 0255 kz eshetnek.
A tmb adott dimenzijnak legnagyobb indexrtke.

Specilis karakterkdok
Nhny specilis karakter HTML-kdja: 17
&alpha;

&beta; stb.
stb.
&deg;
(fok)
&gt;
>
&lt;
<
<br>

&nbsp;
&plusmn;
&radic;
&times;

szkz
(tbbszr egyms utn is szerepelhet)

sortrs-elem

15

Convert to Boolean stb.


Hromllapot (tristate) konstansok.
17
Karakter-entitsok, berhatk a HTML-kdba.
16

Juhsz Tibor: Visual Basic Script programozsi tmutat

30

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Irodalomjegyzk
[1] Hillier, Scot: Inside Microsoft Visual Basic, Scripting Edition (Microsoft Press, 1996)
[2] Holzner, Steven: Web Scripting with VBScript (M&T Books, A Subsidiary of Henry Holt and Company, 1996)
[3] Juhsz Tibor Kiss Zsolt: Tanuljunk programozni. Visual Basic Script, objektumok, web
(ComputerBooks, Budapest, 2004)
[4] Kuzmina Jekatyerina Dr. Tams Pter Tth Bertalan: Programozzunk Visual Basic rendszerben!
(ComputerBooks, Budapest, 2003)
[5] Microsoft Visual InterDev 6.0 Web Technologies Reference (Microsoft Press, 1998)
[6] Szlvi Pter Zsak Lszl: Mdszeres programozs: Programozsi ttelek
(Mikrolgia 19, 6. kiads, ELTE Informatikai Kar, 2004)
[7] Szlvi Pter Zsak Lszl: Mdszeres programozs: Rekurzi
(Mikrolgia 4, 5. kiads, ELTE Informatikai Kar, 2004)
[8] Szlvi Pter Zsak Lszl Temesvri Tibor: Mdszeres programozs: A programkszts technolgija
(Mikrolgia 21, 6. kiads, ELTE Informatikai Kar, 2004)
[9] VBScript Language Reference (Microsoft Corporation, http://msdn.microsoft.com/downloads, 2001)
[10] VBScript Users Guide (MSDN Library, http://msdn.microsoft.com/library, 2006)
[11] Comprehensive JScript and VBScript Reference
(Microsoft Corporation, http://www.microsoft.com/downloads, 2007)

Juhsz Tibor: Visual Basic Script programozsi tmutat

31

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Tartalomjegyzk
A Visual Basic Script programozsi nyelv .........................................................................................................................1
A Visual Basic Script jellemzi ......................................................................................................................................1
A VBScript interpreter ....................................................................................................................................................1
A programfejleszts menete................................................................................................................................................2
A forrskd elksztse ...................................................................................................................................................2
A VBScript programok futtatsa.....................................................................................................................................3
hta fjlok futtatsa.......................................................................................................................................................3
htm fjlok futtatsa......................................................................................................................................................3
Az Internet Explorer belltsa....................................................................................................................................3
A vrusirtk s a szkriptek...........................................................................................................................................4
A program mdostsa ....................................................................................................................................................4
A programfejleszts eszkzei..........................................................................................................................................4
VBScript dokumentci ..................................................................................................................................................5
HTML-alkalmazsok (HTA) ..............................................................................................................................................5
Az ablak tulajdonsgainak mdostsa ...........................................................................................................................5
A VBScript programok szerkezete......................................................................................................................................6
nll szkriptek ksztse...............................................................................................................................................6
A szkriptek beillesztse HTML-fjlokba ........................................................................................................................6
Kd csatolsa a fjlhoz ...................................................................................................................................................6
A VBScript elemei ..............................................................................................................................................................7
A VBScript szintaxisa.....................................................................................................................................................7
Megjegyzsek a forrskdban.........................................................................................................................................7
Azonostk a VBScript-ben ............................................................................................................................................7
Szmok............................................................................................................................................................................7
Sztringek .........................................................................................................................................................................7
Logikai vltozk .............................................................................................................................................................7
Dtumok..........................................................................................................................................................................7
A VBScript kulcsszavai ..................................................................................................................................................8
Vltozk..............................................................................................................................................................................9
A vltozk deklarlsa ....................................................................................................................................................9
A vltozk tpusa ............................................................................................................................................................9
A vltozk alaprtelmezett rtke...................................................................................................................................9
Az elemi tpusok rtkkszlete........................................................................................................................................9
Automatikus tpuskonverzi .........................................................................................................................................10
A vltozk hatkre ......................................................................................................................................................10
Konstansok........................................................................................................................................................................10
Konstansok deklarlsa.................................................................................................................................................10
Beptett konstansok .....................................................................................................................................................10
MsgBox konstansok..................................................................................................................................................10
Sztring konstansok ....................................................................................................................................................11
Sznkonstansok..........................................................................................................................................................11
Kifejezsek........................................................................................................................................................................11
Opertorok ....................................................................................................................................................................11
Aritmetikai opertorok ..............................................................................................................................................11
Logikai opertorok ....................................................................................................................................................11
Relcis opertorok...................................................................................................................................................11
Sztringek sszefzse................................................................................................................................................12
Az opertorok precedencija.........................................................................................................................................12
Mveletek dtumokkal..................................................................................................................................................12

Juhsz Tibor: Visual Basic Script programozsi tmutat

32

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Utastsok..........................................................................................................................................................................12
rtkad utasts ...........................................................................................................................................................12
Beolvass a billentyzetrl ...........................................................................................................................................12
Beolvass az InputBox-szal ......................................................................................................................................12
Beolvass szvegdobozokkal....................................................................................................................................12
Kirs a kpernyre .......................................................................................................................................................13
Kirs a document.write eljrssal ............................................................................................................................13
Kirs az MsgBox fggvnnyel.................................................................................................................................13
Kirs HTML-elemekkel...........................................................................................................................................13
Feltteles elgazsok.....................................................................................................................................................13
IFTHENELSE...................................................................................................................................................13
SELECT CASE.........................................................................................................................................................14
Ciklusok ........................................................................................................................................................................14
Szmlls ciklus........................................................................................................................................................14
Ciklus itertorral .......................................................................................................................................................14
Feltteles ciklus.........................................................................................................................................................14
Folyamatjelz az llapotsorban.................................................................................................................................14
Hossz ciklusok lelltsa .........................................................................................................................................15
Egyb utastsok ...........................................................................................................................................................15
DEBUG.WRITE .......................................................................................................................................................15
DEBUG.WRITELN..................................................................................................................................................15
EXECUTE ................................................................................................................................................................15
RANDOMIZE...........................................................................................................................................................15
STOP.........................................................................................................................................................................15
WITH ........................................................................................................................................................................16
Fggvnyek s eljrsok ...................................................................................................................................................16
Eljrsok definilsa s hvsa......................................................................................................................................16
Fggvnyek definilsa s hvsa .................................................................................................................................16
A fggvnyek s eljrsok paramterei ........................................................................................................................16
Rekurzv alprogramok...................................................................................................................................................16
sszetett adatszerkezetek..................................................................................................................................................17
Tmbk .........................................................................................................................................................................17
Tmbk deklarlsa ..................................................................................................................................................17
A tmbelemek trlse ...............................................................................................................................................17
Tmbt tartalmaz vltoz .......................................................................................................................................17
rtkads az Array fggvnnyel ...............................................................................................................................17
Dinamikus tmbk........................................................................................................................................................18
Dinamikus tmb deklarlsa .....................................................................................................................................18
Dinamikus tmb hasznlata ......................................................................................................................................18
Objektumok...................................................................................................................................................................18
Objektumosztlyok definilsa .................................................................................................................................18
Objektumok ltrehozsa s megszntetse ...............................................................................................................18
Hivatkozs az objektumok tulajdonsgaira s metdusaira ......................................................................................19
Kollekcik.................................................................................................................................................................19
Asszociatv tmbk.......................................................................................................................................................19
Asszociatv tmb ltrehozsa....................................................................................................................................19
Asszociatv tmbk kezelse ....................................................................................................................................19
Halmazok ......................................................................................................................................................................20
Rekordok.......................................................................................................................................................................20
Hibakezels .......................................................................................................................................................................21
Kivtelkezels ...............................................................................................................................................................21
Hibakezels esemnykezelssel ....................................................................................................................................21
Fjlkezels.........................................................................................................................................................................21
A fjlrendszer kezelse .................................................................................................................................................21
A fjlrendszerobjektum.............................................................................................................................................21
A mappaobjektumok .................................................................................................................................................22
A fjlobjektumok ......................................................................................................................................................23
Szvegfjlok kezelse ...................................................................................................................................................24
Vltozk beolvassa..................................................................................................................................................25
Hibakezels a fjlmveleteknl.....................................................................................................................................25

Juhsz Tibor: Visual Basic Script programozsi tmutat

33

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Programozsi ttelek megvalstsa VBScriptben............................................................................................................26


Az indexhatr tllpse.................................................................................................................................................26
1. mdszer: A felttelek kettvlasztsa....................................................................................................................26
2. mdszer: A ciklus korbbi befejezse ...................................................................................................................26
3. mdszer: A tmb bvtse fiktv elemmel ............................................................................................................27
1. Elemi programozsi ttelek.......................................................................................................................................27
2. sszetett programozsi ttelek..................................................................................................................................27
3. Rendezsek ...............................................................................................................................................................27
4. Keressek ..................................................................................................................................................................27
Beptett fggvnyek ........................................................................................................................................................28
Matematikai fggvnyek...............................................................................................................................................28
Sztringfggvnyek ........................................................................................................................................................28
Dtum/id fggvnyek..................................................................................................................................................29
Tpuskonverzis fggvnyek ........................................................................................................................................30
Formtumfggvnyek ...................................................................................................................................................30
Tesztfggvnyek ...........................................................................................................................................................30
Egyb fggvnyek.........................................................................................................................................................30
Specilis karakterkdok ....................................................................................................................................................30
Irodalomjegyzk ...............................................................................................................................................................31

Juhsz Tibor: Visual Basic Script programozsi tmutat

34

You might also like