Professional Documents
Culture Documents
Vbsprutm
Vbsprutm
osztlyos tanknyvhz
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.
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.
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.
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.
Jelentse
Alaprtelmezett rtk
applicationName
border
borderStyle
caption
yes
contextMenu
yes
icon
innerBorder
yes
maximizeButton
yes
minimizeButton
yes
navigable
hivatkozs esetn az j dokumentum az alkalmazs ablakban jelenjen meg (yes: igen, no: j ablakban)
no
scroll
yes
scrollFlat
no
selection
yes
showInTaskBar
yes
singleInstance
no
sysMenu
yes
windowState
normal
thick
normal
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)!
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>
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
Megjegyzsek a forrskdban
A megjegyzseket aposztrfjel (') utn rjuk. Az interpreter az aposztrfjeltl a sor vgig terjed rszt figyelmen kvl
hagyja.
utasts ' 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."
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#
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
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
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.
Megnevezs:
Tartomny:
boolean
logikai
string
date
time
karakterlnc
dtum
id
double
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
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 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
16
32
48
64
1
2
3
4
5
6
7
10
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:
i=i+1
loop
11
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 visszatrsi rtke sztring. Szksg esetn a tpuskonverzis fggvnyekkel numerikus rtkk kell talaktani. Pldul:
szam = cint(inputbox("rjon be egy egsz szmot!", , 0))
12
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."
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)
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.
13
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:
do while felttel
[utastsok]
[exit do]
[utastsok]
loop
do
[utastsok]
[exit do]
[utastsok]
loop while felttel
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
14
Az mshta.exe a Feladatkezelben
Egyb utastsok
DEBUG.WRITE
debug.write sztring1, sztring2,
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.
15
WITH
with objektumnv
utastsok
end with
Fggvnyek s eljrsok
Eljrsok definilsa s hvsa
sub 9 nv[(paramter1, paramter2, )]
[utastsok]
[exit sub]
[utastsok]
end sub
A paramtereket az els esetben nem szabad zrjelbe tenni, a msodik esetben ktelez zrjelbe tenni.
Ekkor az interpreter figyelmen kvl hagyja a visszatrsi rtket (lsd pldul az msgbox hasznlatt).
Rekurzv alprogramok
A fggvnyekben s eljrsokban hasznlhatunk rekurzit.
16
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)
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)
Pldul:
dim a
a=array(0, 1, 2)
msgbox a(0) & a(1) & a(2)
17
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()
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 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
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.
18
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 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
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")
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 tmb elemeire az Item fggvnnyel hivatkozhatunk, melynek paramtere a keresett adat kulcsa:
tmbnv.item(kulcs)
19
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
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
20
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
Drives
File
fjl
Files
Folder
mappa
Folders
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.
21
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
Drives
DriveType
a meghajt tpusa
FreeSpace
IsReady
Path
RootFolder
TotalSize
VolumeName
ktetcmke
A mappaobjektumok
A mappaobjektumok elrshez a mappt az FSO-objektum GetFolder metdusval hozz kell rendelni egy vltozhoz:
set vltoznv = fso.getfolder("elrsi t")
Files
IsRootFolder
Name
ParentFolder
Path
Size
SubFolders
22
CopyFile
fjl msolsa
CopyFolder
mappa msolsa
CreateFolder
mappa ltrehozsa
DeleteFile
fjl trlse
DeleteFolder
mappa trlse
FolderExists
GetFile
GetFolder
MoveFile
fjl mozgatsa
MoveFolder
mappa mozgatsa
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
ParentFolder
a fjl mappja
Path
Size
Type
23
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
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)
AtEndOfStream
ReadLine()
ReadAll()
Read(n)
Skip(n)
SkipLine()
Write(sztring)
WriteLine(sztring)
24
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
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
25
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!
A megolds htrnya, hogy kt helyre kell beilleszteni a vizsglatot, ami nem mindig clszer. Rontja a hatkonysgot
s a program ttekinthetsgt.
26
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.
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].
27
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.
28
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.
29
Tpuskonverzis fggvnyek
CBool(kifejezs) 15
CByte(kifejezs)
CCur(kifejezs)
CDate(kifejezs)
CDbl(kifejezs)
CInt(kifejezs)
CLng(kifejezs)
CSng(kifejezs)
CStr(kifejezs)
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])
Specilis karakterkdok
Nhny specilis karakter HTML-kdja: 17
α
β stb.
stb.
°
(fok)
>
>
<
<
<br>
±
√
×
szkz
(tbbszr egyms utn is szerepelhet)
sortrs-elem
15
30
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)
31
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
32
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
33
34