VBScript © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto in italiano: © 2002 Prentice Hall H. M. Deitel, P. J. Deitel, T. R. Nieto Internet & World Wide Web – How To Program (Second Edition) Stefano Clemente
26 Ottobre 2004Stefano Clemente2 Introduzione VBScript sta per Visual Basic Script È un sottoinsieme di Microsoft Visual Basic I browser MSIE contengono un interprete VBScript Le possibilità di VBScript per lo scripting lato client sono simili a quelle di JavaScript − dal lato client l’uso permette di “migliorare” i documenti XHTML VBScript è usato con i Server Web Microsoft per creare ASP − VBScript è lo standard de facto per ASP
26 Ottobre 2004Stefano Clemente3 Operatori VBScript è case-insensitive È dotato di operatori − aritmetici − logici − di concatenazione − di confronto − relazionali
26 Ottobre 2004Stefano Clemente4 Operatori Aritmetici OperazioneOperatore Espressione Algebrica EspressioneVBScript Addizione+ x + y Sottrazione– z – 8 Moltiplicazione* yb y * b Divisione (virgola mobile)/ v ÷ u v / u Divisione (intera)\ v \ u Esponenziazione^ q p q ^ p Negazione- -e-e ModuloMod q mod r q Mod r
26 Ottobre 2004Stefano Clemente5 Operatori Logici OperazioneOperatore Espressione Logica EspressioneVBScript And LogicoAnd a ⋀ b a And b Or LogicoOr a ⋁ b a Or b Negazione LogicaNot ¬ a Not a
26 Ottobre 2004Stefano Clemente6 Operatori Relazionali Operatore di relazione Operatore VBScript Esempio == a = b ≠<> a <> b >> a > b << a < b ≥>= a >= b ≤<= a <= b
26 Ottobre 2004Stefano Clemente7 Operatori di concatenazione stringhe Gli operatori di concatenazione di stringhe sono − + − & Es: il risultato delle due operazioni − "Pro" + "gram" Pro" & "gram" − “ Pro" & "gram" "Program" è sempre la stringa "Program" Gli operatori sono equivalenti se usati su stringhe, mentre se uno dei due argomenti è, per esempio, di tipo numerico − "Stringa" + 2 "Stringa" produce un errore di violazione dei tipi, perché VBScript cercherà di convertire "Stringa" in un numero per eseguire una somma.
26 Ottobre 2004Stefano Clemente8 Tipi di dati variantVBScript ha un solo tipo di dato, il variant variantIl variant contiene gli altri tipi (stringhe, interi, numeri in virgola mobile, …) variantIl variant è trattato in base all’informazione che contiene variantLe variabili variant − non possono essere parole riservate di VBScript − devono cominciare con una lettera − devono avere nomi con lunghezza massima di 255 caratteri − i nomi possono contenere lettere, cifre e underscore Una variabile è dichiarata nel momento in cui viene utilizzata Option ExplicitSi può costringere a dichiarare una variabile prima di utilizzarla attraverso l’istruzione Option Explicit
26 Ottobre 2004Stefano Clemente9 Sottotipi di Variant SottotipoIntervallo/Descrizione Boolean True o False Byte Currency– , ,5807 Date/Time 1/1/ /12/9999 / 0:00:00..23:59:59. Double – E308..– E–324 (-) E– E308 (+) EmptyNon inizializzato: 0 per i tipi numerici, False per I boolean e "" per le stringhe Integer– Long– ObjectQualsiasi tipo oggetto Single – E38..– E–45 (-) E– E38 (+) String0..~ caratteri
26 Ottobre 2004Stefano Clemente10 Strutture di controllo JavaScriptVBScript ifIf/Then/EndIf if/elseIf/Then/Else/EndIf while While/Wend Do While/Loop While/Wend o Do While/Loop forFor/Next do/while Do/Loop While switch Select Case/End Select Do Until/Loop Do/Loop Until
26 Ottobre 2004Stefano Clemente11 Strutture di controllo if ( s == t ) u = s + t; else if ( s > t ) u = r; else u = n;JavaScript if ( s == t ) u = s + t; else if ( s > t ) u = r; else u = n; If s = t Then u = s + t ElseIf s > t Then u = r Else u = n End IfVBScript If s = t Then u = s + t ElseIf s > t Then u = r Else u = n End If
26 Ottobre 2004Stefano Clemente12 Strutture di controllo switch ( x ) { case 1: alert(“1”); break; case 2: alert(“2”); break; default: alert(“?”); }JavaScript switch ( x ) { case 1: alert(“1”); break; case 2: alert(“2”); break; default: alert(“?”); } Select Case x Case 1 Call MsgBox(“1”) Case 2 Call MsgBox(“2”) Case Else Call MsgBox(“?”) End SelectVBScript Select Case x Case 1 Call MsgBox(“1”) Case 2 Call MsgBox(“2”) Case Else Call MsgBox(“?”) End Select
26 Ottobre 2004Stefano Clemente13 Strutture di controllo while ( !( x == 10) ) ++x; do { ++x; } while (!( x == 10 ));JavaScript while ( !( x == 10) ) ++x; do { ++x; } while (!( x == 10 )); Do Until x = 10 x = x + 1 Loop Do x = x + 1 Loop Until x = 10VBScript Do Until x = 10 x = x + 1 Loop Do x = x + 1 Loop Until x = 10
26 Ottobre 2004Stefano Clemente14 Strutture di controllo x = 8; for ( y = 1; y < x; y++ ) x /= 2;JavaScript x = 8; for ( y = 1; y < x; y++ ) x /= 2; x = 8 For y = 1 To x x = x \ 2 NextVBScript x = 8 For y = 1 To x x = x \ 2 Next ‘ VBScript For y = 2 To 20 Step 2 Call MsgBox( "y = " & y ) Next
26 Ottobre 2004Stefano Clemente15 Esempio 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " -transitional.dtd"> " -transitional.dtd"> Our first VBScript Our first VBScript
26 Ottobre 2004Stefano Clemente16 Esempio 1 <!-- <!-- Option Explicit Option Explicit Dim intTotal Dim intTotal Sub cmdAdd_OnClick() Sub cmdAdd_OnClick() Dim intValue Dim intValue intValue = InputBox(_ intValue = InputBox(_ "Enter an integer", "Input Box",,_ "Enter an integer", "Input Box",,_ 1000, 1000) 1000, 1000) intTotal = CInt( intTotal ) + CInt( intValue ) intTotal = CInt( intTotal ) + CInt( intValue ) Call MsgBox("You entered " & intValue & _ Call MsgBox("You entered " & intValue & _ "; total so far is " & intTotal,, "Results") "; total so far is " & intTotal,, "Results") End Sub End Sub --> --></script> cmdAdd è il nome del bottone della form OnClick è l’evento
26 Ottobre 2004Stefano Clemente17 Esempio 1 </head> Click the button to add an integer to the total. Click the button to add an integer to the total. <input name = "cmdAdd" type = "button" <input name = "cmdAdd" type = "button" value = "Click Here to Add to the Total" /> value = "Click Here to Add to the Total" /> </html>
26 Ottobre 2004Stefano Clemente18 Esempio 1
26 Ottobre 2004Stefano Clemente19 Esempio 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " " Select a site to browse Select a site to browse Select a site to browse Select a site to browse Deitel & Associates, Inc. Deitel & Associates, Inc. Prentice Hall Prentice Hall Prentice Hall Interactive Prentice Hall Interactive
26 Ottobre 2004Stefano Clemente20 Esempio 2 <script for = "SiteSelector" event = "onchange" <script for = "SiteSelector" event = "onchange" type = "text/vbscript"> type = "text/vbscript"> <!-- <!-- Document.Location = _ Document.Location = _ Document.Forms( 0 ).SiteSelector.Value Document.Forms( 0 ).SiteSelector.Value --> --> </html>
26 Ottobre 2004Stefano Clemente21 Esempio 2
26 Ottobre 2004Stefano Clemente22 Esempio 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " " Using VBScript Procedures Using VBScript Procedures <!-- <!-- Option Explicit Option Explicit ' Find the minimum value. Assume that first value is ' Find the minimum value. Assume that first value is ' the smallest. ' the smallest.
26 Ottobre 2004Stefano Clemente23 Esempio 3 Function Minimum( min, a, b ) Function Minimum( min, a, b ) If a < min Then If a < min Then min = a min = a End If End If If b < min Then If b < min Then min = b min = b End If End If Minimum = min ' Return value Minimum = min ' Return value End Function End Function Sub OddEven( n ) Sub OddEven( n ) If n Mod 2 = 0 Then If n Mod 2 = 0 Then Call MsgBox( n & " is the smallest and is even" ) Call MsgBox( n & " is the smallest and is even" ) Else Else Call MsgBox( n & " is the smallest and is odd" ) Call MsgBox( n & " is the smallest and is odd" ) End If End If End Sub End Sub
26 Ottobre 2004Stefano Clemente24 Esempio 3 Sub cmdButton_OnClick() Sub cmdButton_OnClick() Dim number1, number2, number3, smallest Dim number1, number2, number3, smallest ' Convert each input to Long subtype ' Convert each input to Long subtype number1 = CLng( Document.Forms( 0 ).txtBox1.Value ) number1 = CLng( Document.Forms( 0 ).txtBox1.Value ) number2 = CLng( Document.Forms( 0 ).txtBox2.Value ) number2 = CLng( Document.Forms( 0 ).txtBox2.Value ) number3 = CLng( Document.Forms( 0 ).txtBox3.Value ) number3 = CLng( Document.Forms( 0 ).txtBox3.Value ) smallest = Minimum( number1, number2, number3 ) smallest = Minimum( number1, number2, number3 ) Call OddEven( smallest ) Call OddEven( smallest ) End Sub End Sub --> -->
26 Ottobre 2004Stefano Clemente25 Esempio 3 <body> Enter a number Enter a number <input type = "text" name = "txtBox1" size = "5" <input type = "text" name = "txtBox1" size = "5" value = "0" /> value = "0" /> Enter a number Enter a number <input type = "text" name = "txtBox2" size = "5" <input type = "text" name = "txtBox2" size = "5" value = "0" /> value = "0" /> Enter a number Enter a number <input type = "text" name = "txtBox3" size = "5" <input type = "text" name = "txtBox3" size = "5" value = "0" /> value = "0" /> <input type = "button" name = "cmdButton" value = "Enter" /> value = "Enter" /> </html>
26 Ottobre 2004Stefano Clemente26 Esempio 3
26 Ottobre 2004Stefano Clemente27 Array Gli array sono strutture dati con elementi dello stesso tipo − array a dimensione fissa − array a dimensione fissa – la dimensione non cambia durante l’esecuzione Dim var_array ( )Dichiarazione Dim var_array ( ) redimmable array − array a dimensione variabile (redimmable array) – la dimensione può essere modificata durante l’esecuzione Dim var_array ( )Dichiarazione Dim var_array ( ) È possibile definire array multi-dimensionali semplicemente specificando più indici separati da virgole Dim var_array ( dimensione1, …, dimensionen ) − Es. Dim var_array ( dimensione1, …, dimensionen )
26 Ottobre 2004Stefano Clemente28 Array ReDimIl ridimensionamento dell’array di dimensione variabile può essere eseguito attraverso l’istruzione ReDim e può comportare − la riduzione della dimensione specificando una dimensione minore dell’attuale − l’ampliamento della dimensione specificando una dimensione maggiore dell’attuale ReDim var_array( )Es. ReDim var_array( ) ReDimIl comando ReDim è distruttivo e quando viene eseguito l’array perde gli elementi che contiene Preserve − i valori contenuti nell’array possono essere conservati specificando l’opzione Preserve ReDim Preserve var_array ( )es: ReDim Preserve var_array ( )
26 Ottobre 2004Stefano Clemente29 Array PreserveL’opzione Preserve comporta, nel caso di riduzione della dimensione dell’array, la perdita dei dati eccedenti la nuova dimensione e la conservazione degli altri var_array( indice ) 0 (Re)DimPer accedere agli elementi di un array si usa la sintassi var_array( indice ) e il primo elemento ha indice 0 mentre l’ultimo ha indice uguale alla dimensione specificata nel comando (Re)Dim Esistono due funzioni − LBound (sempre 0) LBound ( var_array ) LBound (var_array, numero_dimensione) − LBound – restituisce il più piccolo indice dell’array (sempre 0) es: LBound ( var_array ) per array mono-dimensionali LBound (var_array, numero_dimensione) per multi-dim. − UBound UBound (var_array ) UBound (var_array, numero_dimensione) − UBound – restituisce il più grande indice dell’array es: UBound (var_array ) per array mono-dimensionali UBound (var_array, numero_dimensione) per multi-dim. Erase var_arrayLa memoria allocata per gli array dinamici può essere rilasciata Erase var_array − in questo caso l’array dovrà essere ridimensionato prima di essere usato nuovamente
26 Ottobre 2004Stefano Clemente30 Esempio 4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " " Using VBScript Arrays Using VBScript Arrays <!-- <!-- Option Explicit Option Explicit Public Sub DisplayArray( x, s ) Public Sub DisplayArray( x, s ) Dim j Dim j Document.Write( s & ": " ) Document.Write( s & ": " ) For j = 0 To UBound( x ) For j = 0 To UBound( x ) Document.Write( x( j ) & " " ) Document.Write( x( j ) & " " ) Next Next Document.Write( " " ) Document.Write( " " ) End Sub End Sub
26 Ottobre 2004Stefano Clemente31 Esempio 4 Dim fixedSize( 3 ), fixedArray, dynamic(), k Dim fixedSize( 3 ), fixedArray, dynamic(), k ReDim dynamic( 3 ) ' Dynamically size array ReDim dynamic( 3 ) ' Dynamically size array fixedArray = Array( "A", "B", "C" ) fixedArray = Array( "A", "B", "C" ) ' Populate arrays with values ' Populate arrays with values For k = 0 to UBound( fixedSize ) For k = 0 to UBound( fixedSize ) fixedSize( k ) = 50 - k fixedSize( k ) = 50 - k dynamic( k ) = Chr( 75 + k ) dynamic( k ) = Chr( 75 + k ) Next Next ' Display contents of arrays ' Display contents of arrays Call DisplayArray( fixedSize, "fixedSize" ) Call DisplayArray( fixedSize, "fixedSize" ) Call DisplayArray( fixedArray, "fixedArray" ) Call DisplayArray( fixedArray, "fixedArray" ) Call DisplayArray( dynamic, "dynamic" ) Call DisplayArray( dynamic, "dynamic" ) ' Resize dynamic, preserve current values ' Resize dynamic, preserve current values ReDim Preserve dynamic( 5 ) ReDim Preserve dynamic( 5 ) dynamic( 4 ) = dynamic( 4 ) = dynamic( 5 ) = dynamic( 5 ) = Call DisplayArray( dynamic, "dynamic after ReDim Preserve" ) Call DisplayArray( dynamic, "dynamic after ReDim Preserve" ) --> --> </html>
26 Ottobre 2004Stefano Clemente32 Esempio 4
26 Ottobre 2004Stefano Clemente33 Manipolazione di stringhe Una delle caratteristiche più potenti di VBScript è la manipolazione di stringhe Le stringhe sono case-sensitiveLe stringhe sono case-sensitive I caratteri di una stringa sono numerabili per mezzo di indici − Il primo carattere ha indice 1 VBScript dispone di diverse funzioni per la manipolazione di stringhe La maggior parte di queste funzioni non modificano la stringa, ma restituiscono come risultato una stringa corrispondente alla stringa modificata
26 Ottobre 2004Stefano Clemente34 Funzioni per la manipolazione di stringhe FunzioneDescrizione Asc Restituisce il codice ASCII di un carattere. Es. Asc("x") = 120. Chr Restituisce il carattere relativo a un codice ASCII. Es. Chr(120) = “x” L’argomento deve essere un intero compreso tra 0 e 255, altrimenti viene restituito un errore. InStr Verifica se una stringa (primo argomento) contiene una sottostringa (secondo argomento). La ricerca è fatta da sinistra verso destra. In caso di successo restituisce l’indice del primo carattere della stringa corrispondente al primo della sottostringa, altrimenti restituisce 0. Es. Instr("sparrow","arrow") = 3, Instr("japan","wax") = 0. Len Restituisce il numero di caratteri della stringa. Len("hello") = 5. LCase Restituisce la stringa passata come argomento, ma con soli caratteri minuscoli. Es. = UCase Restituisce la stringa passata come argomento, ma con soli caratteri maiuscoli. Es. returns Left Restituisce i primi n (secondo argomento) caratteri più a sinistra di una stringa (primo argomento). Es. Left("Web",2) = “We”
26 Ottobre 2004Stefano Clemente35 Funzioni per la manipolazione di stringhe FunzioneDescrizione Mid Restituisce gli n (terzo argomento) caratteri di una stringa (primo argomento) a partire dalla posizione m (secondo argomento). Es. Mid("abcd",2,3)= “bcd” Right Restituisce i primi n (secondo argomento) caratteri più a destra di una stringa (primo argomento). Es. Right("Web",2) returns “eb” Space Restituisce una stringa di n (argomento) spazi. Es. Space(4)restituisce una stringa di 4 spazi StrComp Verifica l’uguaglianza di due stringhe e restituisce 1 se la prima stringa è maggiore della seconda, -1 se la prima stringa è minore della seconda, 0 se le stringhe sono equivalenti. Il confronto di default è binario (=, case-sensitive). Passando come terzo argomento vbTextCompare è possibile eseguire un confronto case-insensitive. Es. StrComp("bcd", "BCD") = 1, StrComp("BCD", "bcd")= -1, StrComp("bcd", "bcd") = 0, StrComp("bcd", "BCD", vbTextCompare)= 0 String Restituisce una stringa in cui un carattere (primo argomento) è ripetuto n volte (secondo argomento). Es. String(4,"u")= “uuuu” Trim Restituisce una stringa senza spazi all’inizio e alla fine. Es. Trim(" hi ")= “hi” LTrim Restituisce una stringa senza spazi all’inizio. Es. LTrim(" yes")= “yes”
26 Ottobre 2004Stefano Clemente36 Funzioni per la manipolazione di stringhe FunzioneDescrizione RTrim Restituisce una stringa senza spazi alla fine. Es. RTrim("no ") = “no” Filter Restituisce un array di stringhe contenente il risultato dell’operazione di filtraggio Es. Filter(Array("A","S","D","F","G","D"),"D") restituisce un array di due elementi contenente "D" e "D", mentre Filter(Array("A","S","D","F","G","D"),"D",False) restituisce un array contenente "A", "S", "F" e "G" Join Restituisce una stringa contenente la concatenazione di elementi Array separati da un delimitatore, eventualmente passato come secondo argomento opzionale (default = spazio). Es Join(Array("one","two","three")) = “one two three.”, Join(Array("one","two","three"),"$^") = “one$^two$^three” Replace Restituisce una stringa. Richiede tre argomenti, la stringa nella quale si vogliono sostituire dei caratteri, la sottostringa da cercare e la sottostringa con la quale si vuole sostituire (è case-sensitive). Es. Replace("It's Sunday and the sun is out","sun","moon") = “It's Sunday and the moon is out”
26 Ottobre 2004Stefano Clemente37 Funzioni per la manipolazione di stringhe FunzioneDescrizione Split Restituisce un array di sottostringhe della stringa passata come argomento. La stringa viene divisa considerando per default lo spazio come separatore, un carattere separatore diverso può essere passato come secondo argomento (opzionale). Es. Split("I met a traveller") restituisce "I", "met", "a" e "traveller" Split("red,white,and blue", ",") restituisce "red", "white" e "and blue" StrReverse Restituisce una stringa (argomento) in ordine inverso. Es. StrReverse("deer") = “reed” InStrRev Verifica se una stringa (primo argomento) contiene una sottostringa (secondo argomento). La ricerca è fatta da destra verso sinistra. In caso di successo restituisce l’indice del primo carattere della stringa corrispondente al primo della sottostringa, altrimenti restituisce 0. es. InstrRev("sparrow","arrow") = 3 InstrRev("japan","wax") = 0 InstrRev("to be or not to be","to be") = 14
26 Ottobre 2004Stefano Clemente38 Esempio 5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " transitional.dtd"> " transitional.dtd"> Using VBScript String Functions Using VBScript String Functions <!-- <!-- Option Explicit Option Explicit
26 Ottobre 2004Stefano Clemente39 Esempio 5 Public Function TranslateToPigLatin( englishPhrase ) Public Function TranslateToPigLatin( englishPhrase ) Dim words ' Stores each individual word Dim words ' Stores each individual word Dim k, suffix Dim k, suffix ' Get each word and store in words the ' Get each word and store in words the ' default delimiter for Split is a space ' default delimiter for Split is a space words = Split( englishPhrase ) words = Split( englishPhrase ) For k = 0 to UBound( words ) For k = 0 to UBound( words ) ' Check if first letter is a vowel ' Check if first letter is a vowel If InStr( 1, "aeiou", _ If InStr( 1, "aeiou", _ LCase( Left( words( k ), 1 ) ) ) Then LCase( Left( words( k ), 1 ) ) ) Then suffix = "y" suffix = "y" Else Else suffix = "ay" suffix = "ay" End If End If
26 Ottobre 2004Stefano Clemente40 Esempio 5 ' Convert the word to pig Latin ' Convert the word to pig Latin words( k ) = Right( words( k ), _ words( k ) = Right( words( k ), _ Len( words( k ) ) - 1 ) & _ Len( words( k ) ) - 1 ) & _ Left( words( k ), 1 ) & suffix Left( words( k ), 1 ) & suffix Next Next ' Return translated phrase, each word ' Return translated phrase, each word ' is separated by spaces ' is separated by spaces TranslateToPigLatin = Join( words ) TranslateToPigLatin = Join( words ) End Function End Function Sub cmdButton_OnClick() Sub cmdButton_OnClick() Dim phrase Dim phrase phrase = Document.Forms( 0 ).txtInput.Value phrase = Document.Forms( 0 ).txtInput.Value Document.forms( 0 ).txtPigLatin.Value = _ Document.forms( 0 ).txtPigLatin.Value = _ TranslateToPigLatin( phrase ) End Sub End Sub --> -->
26 Ottobre 2004Stefano Clemente41 Esempio 5 <body> Enter a sentence Enter a sentence Pig Latin Pig Latin <input type = "button" name = "cmdButton" <input type = "button" name = "cmdButton" value = "Translate" /> value = "Translate" /> </html>
26 Ottobre 2004Stefano Clemente42 Esempio 5
26 Ottobre 2004Stefano Clemente43 Classi e Oggetti ClassIn VBScript l’unità della programmazione OO è la classe ( Class ) dalla quale gli oggetti sono creati (istanziati) I metodi sono procedure VBScript incapsulate all’interno delle classi insieme ai dati che esse elaborano Le classi sono un modo attraverso il quale gli utenti possono creare nuovi tipi di dati, definendo − i dati (le variabili) − le operazioni permesse sui dati (i metodi)
26 Ottobre 2004Stefano Clemente44 Classi e Oggetti information hidingLe classi nascondono la loro implementazione all’utente (information hiding) − l’utente può anche conoscere alcuni dettagli implementativi della classe, ma l’unico modo per interagire con essa è attraverso i metodi che la classe mette a disposizione Class dispone di Private − dati privati ( Private ) – dati modificabili solo dalla classe Public Private − metodi richiamabili dall’utente ( Public ) – permettono all’utente di modificare/visualizzare i dati Private Property LetProperty Let – modifica dati che non sono sottotipi dell’oggetto (interi, stringhe, ecc.) Property SetProperty Set – modifica dati che sono sottotipi dell’oggetto Property GetProperty Get – restituisce il valore dei dati
26 Ottobre 2004Stefano Clemente45 Esempio 6 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " transitional.dtd"> " transitional.dtd"> Using a VBScript Class Using a VBScript Class <!-- Option Explicit Option Explicit
26 Ottobre 2004Stefano Clemente46 Esempio 6 Class Person Class Person Private name, yearsOld, ssn Private name, yearsOld, ssn Public Property Let FirstName( fn ) Public Property Let FirstName( fn ) name = fn name = fn End Property End Property Public Property Get FirstName() Public Property Get FirstName() FirstName = name FirstName = name End Property End Property Public Property Let Age( a ) Public Property Let Age( a ) yearsOld = a yearsOld = a End Property End Property Public Property Get Age() Public Property Get Age() Age = yearsOld Age = yearsOld End Property End Property
26 Ottobre 2004Stefano Clemente47 Esempio 6 Public Property Let SocialSecurityNumber( n ) Public Property Let SocialSecurityNumber( n ) If Validate( n ) Then If Validate( n ) Then ssn = n ssn = n Else Else ssn = " " ssn = " " Call MsgBox( "Invalid Social Security Format" ) Call MsgBox( "Invalid Social Security Format" ) End If End If End Property End Property Public Property Get SocialSecurityNumber() Public Property Get SocialSecurityNumber() SocialSecurityNumber = ssn SocialSecurityNumber = ssn End Property End Property
26 Ottobre 2004Stefano Clemente48 Esempio 6 Private Function Validate( expression ) Private Function Validate( expression ) Dim regularExpression Dim regularExpression Set regularExpression = New RegExp Set regularExpression = New RegExp regularExpression.Pattern = "^\d{3}-\d{2}-\d{4}$" regularExpression.Pattern = "^\d{3}-\d{2}-\d{4}$" If regularExpression.Test( expression ) Then If regularExpression.Test( expression ) Then Validate = True Validate = True Else Else Validate = False Validate = False End If End If End Function End Function Public Function ToString() Public Function ToString() ToString = name & Space( 3 ) & age & Space( 3 ) & ssn ToString = name & Space( 3 ) & age & Space( 3 ) & ssn End Function End Function End Class ' Person
26 Ottobre 2004Stefano Clemente49 Esempio 6 Sub cmdButton_OnClick() Sub cmdButton_OnClick() Dim p ' Declare object reference Dim p ' Declare object reference Set p = New Person ' Instantiate Person object Set p = New Person ' Instantiate Person object With p With p.FirstName = Document.Forms(0).txtBox1.Value.FirstName = Document.Forms(0).txtBox1.Value.Age = CInt( Document.Forms(0).txtBox2.Value ).Age = CInt( Document.Forms(0).txtBox2.Value ).SocialSecurityNumber =_.SocialSecurityNumber =_ Document.Forms(0).txtBox3.Value Document.Forms(0).txtBox3.Value Call MsgBox(.ToString() ) Call MsgBox(.ToString() ) End With End With End Sub End Sub --> -->
26 Ottobre 2004Stefano Clemente50 Esempio 6 <body> Enter first name Enter first name Enter age Enter age Enter social security number Enter social security number <input type = "button" name = "cmdButton" <input type = "button" name = "cmdButton" value = "Enter" /> value = "Enter" /> </html>
26 Ottobre 2004Stefano Clemente51 Esempio 6
26 Ottobre 2004Stefano Clemente52 Esempio 6