vbskript rövid leírás

Embed Size (px)

Citation preview

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

VISUAL BASIC SCRIPTPROGRAMOZSI TMUTATEz 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 nyelvA Visual Basic Script jellemziA 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 interpreterA 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 azmshta 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

1

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A programfejleszts meneteA forrskd elksztseA 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

2

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A VBScript programok futtatsahta 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

3

HTML application: HTML-alkalmazs.

Juhsz Tibor: Visual Basic Script programozsi tmutat

3

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 mdostsaEgyszer 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 eszkzeiA 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

4

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

VBScript dokumentciMagyar 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 mdostsaA 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:

A tulajdonsgokat sztringknt kell megadni nv = "rtk" formban. A tulajdonsg neve applicationName border borderStyle caption contextMenu icon innerBorder maximizeButton minimizeButton navigable scroll scrollFlat selection showInTaskBar singleInstance sysMenu windowState Jelentse az ablak neve (objektumknt trtn hivatkozshoz) a keret tpusa (thick, dialog, thin, none) a keret stlusa (normal, raised, sunken, complex, static) cmsor engedlyezse (yes/no) a jobb egrgombra megjelen men engedlyezse (yes/no) az alkalmazs ikonjnak elrsi tja bels keret megjelentse (yes/no) Teljes mret gomb megjelentse (yes/no) Kis mret gomb megjelentse (yes/no) hivatkozs esetn az j dokumentum az alkalmazs ablakban jelenjen meg (yes: igen, no: j ablakban) grdtsv megjelentse (yes, no, auto) skbeli megjelens grdtsv (yes: igen, no: trhats) kivlaszts engedlyezse az ablakban (yes/no) az alkalmazs megjelentse a Tlcn (yes/no) az alkalmazs egyszerre csak egy pldnyban indthat (yes/no) a rendszermen engedlyezse a cmsor ikonjra kattintskor (yes/no) az ablak kezdeti mrete (normal, maximize, minimize) A HTA:Application elem tulajdonsgai yes yes yes no yes no yes yes no yes normal thick normal yes yes Alaprtelmezett rtk

Juhsz Tibor: Visual Basic Script programozsi tmutat

5

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A VBScript programok szerkezetenll szkriptek ksztseA VBScript programok utastsait nem szksges HTML-kdba illesztennk. A forrsfjlban a s elemek kztt tallhat utastsok a fjl megnyitsakor vgrehajtsra kerlnek. A nyit tagban meg kell adnunk az alkalmazott programozsi nyelvet 4 . utastsok

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-fjlokbaA 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 fjlhozA 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:

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:

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

6

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A VBScript elemeiA VBScript szintaxisaMinden 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 forrskdbanA 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-benA 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.

SzmokA 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.

SztringekA 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 vltozkA 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.

DtumokA 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

7

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

A VBScript kulcsszavaiAbs 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

Juhsz Tibor: Visual Basic Script programozsi tmutat

8

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

VltozkA vltozk deklarlsaA 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 tpusaA 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 rtkeHa 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 rtkkszleteAz albbiakban megadjuk az ltalnos variant tpus altpusainak rtkkszlett. Altpus: boolean string date time Megnevezs: logikai karakterlnc dtum id Tartomny: true (-1) vagy false (0) legfeljebb ~ktmillird karakter 100. janur 1. s 9999. december 31. kztt 0:00:00-tl 23:59:59-ig 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

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

double

dupla pontossg vals

6

Juhsz Tibor: Visual Basic Script programozsi tmutat

9

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 tpuskonverziAz 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 hatkreA 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.

KonstansokKonstansok deklarlsaconst 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 konstansokA 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 0 1 2 3 4 5 16 32 48 64 1 2 3 4 5 6 7 Gombok, ikonok OK OK, Mgse Kilps (Megszakts, Lellts), Ismt (jra), Tovbb (Kihagys) Igen, Nem, Mgse Igen, Nem Ismt (jra), Mgse 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 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 rtk Chr(10)+Chr(13) Chr(9) Jelents j sor Tabultor

KifejezsekOpertorokAritmetikai 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 ado while i nagyobb = 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 precedencijaAz 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 dtumokkalA 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.

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

rtkad utastsAz rtkad utasts jele az egyenlsgjel (=).

Beolvass a billentyzetrlBeolvass 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.

7

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 kpernyreKirs a document.write eljrssaldocument.write sztringkifejezs, sztringkifejezs,

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

vagy:document.write "Els sor.
Msodik sor."

Vltoz rtknek megjelentse (automatikus tpuskonverzi!) pldul:document.write "x = " & x & "
"

vagy egyszeren:document.write "x = ", x, "
"

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 fggvnnyelmsgbox(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 elgazsokIFTHENELSEif 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 CASEselect 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.

CiklusokSzmlls ciklusfor 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 itertorralfor 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

Htultesztel ciklus ismtlsi felttellel:do [utastsok] [exit do] [utastsok] loop while felttel

Elltesztel ciklus kilpsi felttellel:do until felttel [utastsok] [exit do] [utastsok] loop

Htultesztel ciklus kilpsi felttellel: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.

8

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 utastsokDEBUG.WRITEdebug.write sztring1, sztring2,

Elkldi a debuggernek a sztringeket. Csak hibakeres zemmdban van hatsa. DEBUG.WRITELNdebug.writeln sztring1, sztring2,

Soremelssel kldi el a debuggernek a sztringeket. Csak hibakeres zemmdban van hatsa. EXECUTEexecute 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. RANDOMIZErandomize

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

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

WITHwith 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 eljrsokEljrsok definilsa s hvsasub 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 hvsafunction 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 paramtereirtk 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 alprogramokA fggvnyekben s eljrsokban hasznlhatunk rekurzit.

9

A szubrutin (subroutine) rvidtse.

Juhsz Tibor: Visual Basic Script programozsi tmutat

16

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

sszetett adatszerkezetekTmbkTmbk deklarlsadim 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 trlseerase 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 tmbkA 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.

ObjektumokA 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 tmbkAz 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)

Atmbnv(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

HalmazokA 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.

RekordokA 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.

HibakezelsKivtelkezelsA 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 esemnykezelsselEgy hiba bekvetkezsekor ltrejn az onerror esemny, melyhez esemnykezel eljrst kszthetnk. gy a hibt az eljrsban kezelhetjk. Az onerror hasznlatt a [3] irodalom ismerteti rszletesen.

FjlkezelsA fjlrendszer kezelseA 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 Files Folder Folders TextStream

meghajt, belertve a klnbz httrtrakat s a hlzati meghajtkat a szmtgphez csatlakoz meghajtk kollekcija fjl a mappa ltal trolt fjlok kollekcija mappa a mappa almappinak kollekcija 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 Drives DriveType FreeSpace IsReady Path RootFolder TotalSize VolumeName

a meghajt betjele kettspont nlkl a szmtgphez csatlakoz meghajtk kollekcija a meghajt tpusa a szabad terlet mrete bjtban a httrtr kszenlti llapott jelz logikai rtk a meghajt betjele kettsponttal (elrsi t) a gykrknyvtr elrsi tja a httrtr teljes kapacitsa bjban 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 & "
" document.write "Mret: " & merevlemez.totalsize & " bjt
" document.write "Szabad hely: " & merevlemez.freespace & " bjt
" 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 IsRootFolder Name ParentFolder Path Size SubFolders

a mappa sszes llomnyt tartalmaz kollekci logikai rtk, a gykrknyvtr esetn True, egybknt False a mappa neve (rhat) a szl mappaobjektum (!) a mappa teljes elrsi tja a mappa mrete az almappkkal egytt 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 CopyFolder CreateFolder DeleteFile DeleteFolder FolderExists GetFile GetFolder MoveFile MoveFolder

fjl msolsa mappa msolsa mappa ltrehozsa fjl trlse mappa trlse True, ha ltezik a paramterknt megadott mappa fjl hozzrendelse egy vltozhoz mappa hozzrendelse egy vltozhoz fjl mozgatsa 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 & "
" document.write "Elrsi t: " & .path & "
" document.write "Szl mappa: " & .parentfolder & "
" document.write "Teljes mret (almappkkal): " & .size & "
" document.write "Almappk szma: " & .subfolders.count & "
" 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 Name ParentFolder Path Size Type

a ltrehozs ideje a fjl neve (rhat) a fjl mappja a fjl teljes elrsi tja a fjl mrete bjtokban a fjlt tpusnak megnevezse (megfelel az Intz Tpus oszlopban feltntetett sztringnek) 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 & "
" for each fajl in mappa.files document.write fajl.name & " (" & fajl.size & " bjt, " & _ fajl.datecreated & ", " & fajl.type & ")
" 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 kezelseA 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 AtEndOfStream ReadLine() ReadAll() Read(n) Skip(n) SkipLine() Write(sztring) WriteLine(sztring)

True, ha elrtk egy sor vgt True, ha elrtk a fjl vgt beolvas egy sort beolvassa a fjl teljes tartalmt beolvas n darab karaktert tlp (kihagy) n darab karaktert kihagy egy egsz sort kirja a fjlba a sztring karaktereit 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() & "
" 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 fjlmveleteknlA 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 13

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.

Juhsz Tibor: Visual Basic Script programozsi tmutat

25

Kiegszts az Informatika 10. osztlyos tanknyvhz

Nemzeti Tanknyvkiad, Rsz. 16272

Programozsi ttelek megvalstsa VBScriptbenA 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 adim 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 tllpseA 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