Monday, September 27, 2010

Introducción a VBScript


Introducción a VBScript

VBScript es un lenguaje de programación horrible, pero extremadamente útil
en el entorno de sistemas ya que durante años ha sido el lenguaje que por
excelencia se ha usado para la administración/automatización de Windows.

Se trata de un lenguaje interpretado, no compilado. Otros lenguajes interpretados
son JavaScript, perl, y salvando las distancias Python. El proceso que ejecuta los vbs es el WScript.exe


Seis cosas sobre VBS:

1. Los comentarios empiezan por '
2. Al iniciar el script decidimos si es necesario o no declarar las variables
  antes de usarlas: Option Explicit
3. El script se interrumpe ante cualquier error, a no ser que declaremos:
On Error Resume Next
4. Una instrucción es una línea (no ";" final)
5. Las variables se declaran con la expresión Dim
 Algunas consideraciones sobre variables:
- se puede declarar más de una a la vez separándolas por ","
- por convención, aquellas que apuntan a objetos empiezan por "obj"
         y las otras tienen nombres representativos.
6. Para asignar valor a una variable NO objeto: var = <valor>



' SCript de prueba que muestra una frase en un msgBox
Option Explicit

On Error Resume Next
Dim frase
frase="Bienvenido"

MsgBox frase



Probar:
1. Comentando la declaración de la variable (Dim frase)
2. Comentando la declaración de la variable y además el Resume Next
3. Todo lo anterior + el Option Explicit




Arrays:

0. Es necesario DECLARARLOS

1. La primera posición de una matriz es la 0. Así un Array de 10 elementos empieza
en el 0 y acaba en el 9

2. Pueden tener varias dimensiones, y contener diferentes tipos de datos.

3. Para añadir un elemento a un array indicamos en qué posición queremos añadirlo

Ejemplo: programa que declara un array de 2x10, y asigna valores. Luego muestra dos de ellos
Dim arrUsuarios(1,9)
arrUsuarios(0,0)= "Alex"
arrUsuarios(0,1)= "Garcia"
arrUsuarios(1,0)= "Jose"
arrUsuarios(1,1)= "Garrido"

MsgBox "El primer usuario es " & arrUsuarios(0,0) & " y el segundo " & arrUsuarios (1,0)

4. Hay arrays dinámicos, se declaran sin especificar sus elementos. P.e.
        Dim arrUsuarios()
y se les asigna un tamaño mediante las sentencias "ReDim" y "Redim Preserve"
        Redim arrUsuarios(9) 'la primera vez
        Redim Preserve arrUsuarios(10) 'para añadirle una fila más

5. Se pueden declarar/asignar mediante el uso de la función Array()
de esta otra forma:

Ejemplo:
 Dim arrUsuarios
 arrUsuarios = Array("valor1","valor2","valor3")
 ReDim Preserve arrUsuarios(10)


Convirtiendo Strings en Arrays gracias a la función Split(cad,separador)

 str = "alex,jose,maria,carla"
 arrNombres= Split(str,",")
 MsgBox arrstr(3)

Convirtiendo Arrays en Strings gracias a la función Join(array,separador)

 dim arrNombres
 arrNombres = Array("alex","jose","maria","carla")
 str = Join(arrNombres,";")
 MsgBox str




Tipos de datos

Ésta es la lista de los tipos de datos que tenemos en VBScript, y a continuación está la lista de las funciones para pasar de un tipo a otro.

Tipos de datos:


Funciones de conversión entre datos:



STATEMENTS y FUNCTIONS

En castellano también se habla como de Procedimientos y de Funciones. Ambos son una forma de reutilizar y ordenar el código, y ambos permiten el paso de parámetros. La diferencia entre ellos es:

Statements:
  1. no devuelven nada
  2. sus parámetros se pasan sin paréntesis
Functions:
  1. devuelven un valor, que por lo tanto habrá que recoger en una variable y procesar
  2. sus parámetros se pasan entre paréntesis

Para comprobar la diferencia entre uno y otro tipo de subrutina vamos a tomar como ejemplo el “MsgBox”, que es una subrutina que tanto puede ser un Statement como una Function según se invoque.
Cuando se usa la función MsgBox, el valor que devuelve es un número u otro en función del botón que se pulse en el cuadro de diálogo.

MsgBox "vbscript is in linguiji sicriti", 48 , "mensaje secreto"

(Poner captura)

Los parámetros que admite son:
1. String: que será el cuerpo del mensaje que se mostrará
2. Integer: que identifica el tipo de iconos/recuadro que aparecerá
3. String: que aparecerá en la barra de título

Ejemplo de MsgBox como Function primero, y como Statement posteriormente en el If ... Then

Dim valorElegido
valorElegido = MsgBox ("Desea continuar" & VbCrLf &  _
                        "en caso negativo lo tiene muy mal", _
                   vbYesNo , "Seguimos?")

If valorElegido = vbYes Then
        MsgBox ("Buena elección, continuemos")
Else MsgBox ("Ha pulsado NO, en junio su elección se verá cumplida")
End If

Ejemplo de la función InputBox que permite recoger texto introducido por el usuario:

Dim loginName
Dim confirmacion

loginName = InputBox ("Nombre del usuario a dar de alta")
confirmacion = MsgBox ("El nombre de usuario que introdujo es: " &  _
            loginName & VbCrLf & " es correcto?", _
            vbYesNo , "Continuar?")

If confirmacion = vbYes Then
        MsgBox  "Usted ha decidido continuar",0,"titulo"
Else
           MsgBox  "Usted ha decidido NO continuar"
End If

Notas:
  1. VbCrLf es una Constante definida en VBS que corresponde al valor de salto de línea y retorno de carro en un texto
  2. El “_” a final de línea indica que la instrucción sigue en la línea siguiente.
  3. vbYesNo es una constante númerica igual a 4, y que corresponde con el cuadro con Yes y No cuando se pasa como segundo parámetro de MsgBox

Tipos de MsgBox y constantes asociadas:

Valores devueltos por MsgBox según el botón que se pulse:

Algunas funciones de uso muy común:

De fecha:
Year, Month, Day, WeekDay, Hour, Minute, Second

De conversión de tipo:
Cstr, CBool, ... las que aparecían en el cuadro anterior

De cadena (strings):
Join y Split, que hemos visto al hablar de Arrays
InStr y InStrRev para hacer búsquedas
Len
Replace
LCase y UCase
LTrim, RTrim, Trim
LBound, UBound



1 comment:

dainlafratta said...

Tintronic Bike Frame - A vintage
Tintronic bikes are the way we go man titanium bracelet in the world of bikes, and gr5 titanium we're sure to continue the tradition of tungsten titanium our signature product. If you 2014 ford focus titanium hatchback are looking titanium keychain to