Monday, November 16, 2009

VBScript: procedimientos y otras curi...

VBScript: procedimientos y otras curiosidades


Procedimientos


Los procedimientos son un mecanismo para la reutilización de código, y también para su simplificación.

Visual Basic Script tiene tres tipos de procedimiento para favorecer la reutilización de código:
  1. subrutinas: ejecutan algo y ya está (p.e. borrar un directorio). Los parámetros se le pasan sin paréntesis.
  2. funciones: ejecutan algo y devuelven un valor(p.e. borrar un directorio y devolver true si se ha borrado correctamente, y false en cualquier otro caso). Los parámetros se le pasan entre paréntesis.
  3. eventos: son un tipo especial de subrutina que se ejecuta cuando se da una determinada condición como p.e. pulsar un botón o pasar por encima de un texto.


Ejemplo de función:

WScript.Echo “Has introducido el nombre “ & getName()



Function getName()
  Dim tmpName
  tmpName = “”
  Do While tmpName = “”
    tmpName = InputBox(“Introduce un nombre: ”)
  Loop
  getName = tmpName
End Function

(también existe:  Exit Function )


Ejemplo de subrutina:

showError "No se ha podido crear el fichero, compruebe que tiene permisos","Error de ejecución"

Sub showError(errorMessage,title)
  MsgBox “Input Error: “ & errorMessage,, title
End Sub




Información útil acerca del propio script o de su entorno

Alguna información útil que podemos recabar del script puede ser: la ruta completa desde la que se ejecuta, el nombre del script mismo, los argumentos que le hemos pasado.

los argumentos que le hemos pasado:
Set theArgs = WScript.Arguments

la ruta completa de ejecución:
WScript.ScriptFullName

el nombre del script:
WScript.ScriptName

Ejemplo de uso:

wscript.echo wscript.ScriptFullName
wscript.echo wscript.scriptname
wscript.echo wscript.arguments.count
for each elemento in wscript.arguments
 wscript.echo cstr(elemento)
next

La ruta completa de ejecución suele ser útil para poder acceder a ficheros de configuración o de datos que estén en el mismo directorio que nuestro script.






No comments: