Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre las cadenas de texto tambien conocidas como strings.

Anuncios

A diferencia de otros lenguajes estas son propias del lenguaje y no dependen de ninguna libreria externa o tener que usar un tipo especial (por ejemplo char) sino que simplemente la pasamos a una variable ya sea por medio de la comilla simple (‘) o la comilla doble (“), en general se usa un solo formato pero lo bueno que una puede incluir a la otra, por ejemplo dos sintaxis validas son:

mensaje = "Texto de 'Prueba'"
mensaje = 'Texto de "Prueba"'
Anuncios

Por lo general no es recomendable usar este tipo de sintaxis, aprovechando el ejemplo anterior vamos a decir que tenemos dos formas de pasar los datos a la variable: uno es de forma literal, que es el ejemplo que vimos anteriormente donde pasamos la frase entre comillas, la cual no podremos cambiar y la otra es variable por medio de una variable, justamente, veamos dos ejemplos:

Literal: msgbox "Mensaje de prueba",,"Titulo de la caja"
Variable: msgbox mensaje,,titulo

En el caso de literal como pasamos directamente entre comillas, cada vez que se llame al msgbox este tendra ese mensaje y ese titulo, en el caso de las variables al tener dos variables asignados para dichos textos dependeran del que hayamos asignado al momento de invocarlo, pasemos al siguiente tema.

Anuncios

ASCII/ANSI

Anuncios

Como sabran las computadoras a diferencia de algunos seres humanos no diferencian entre letras y numeros sino que solo conocen el codigo binario, unos y ceros, pero el que trabaja en general con ellas son seres sub humanos mas conocidos como usuarios 😂, al desarrollador y/o soporte tecnico sabe de lo que hablo, que no saben interpretar el codigo binario sino que necesitan imperiosamente de las letras y numeros, para ello se ideo un codigo llamado ASCII que hace una equivalencia de los caracteres disponibles con un valor en decimal y a su vez este valor decimal se transforma en binario para que el computador lo interprete y se lo devuelva al usuario y todo el mundo feliz, un ejemplo es como vimos en casos anteriores el chr(10) donde la funcion chr se encarga de convertir ese valor decimal del argumento en un caracter, en este caso el Enter, o nueva linea, a continuacion les dejo un link para que vean una tabla con todos los caracteres disponibles y sus respectivos valores:

https://elcodigoascii.com.ar/

Anuncios

Otra de las funciones utiles es Asc que hace lo completamente opuesto a chr que es recibir un caracter y devolver su valor decimal, como siempre esto es util bajo ciertas circunstancias donde deberemos enviar ese valor en lugar del caracter en si, por ejemplo un bucle for o algo que necesite contar, pero no es algo muy habitual y si es mas habitual usar a chr, otro detalle que mencionamos pero no explicamos es el ampersand (&) para concatenar texto, pero que es concatenar? Concatenar es la accion de sumar a un texto otro texto para modificar al existente u otro, tambien podemos usar el signo de mas (+) pero la diferencia principal entre ambos es que el signo de mas solo puede concatenar cadenas de texto y en cambio el ampersand puede concatenar distintos tipos de datos, por ejemplo texto y numeros, a continuacion veremos una tabla sobre los caracteres de control mas comunes:

Cod. AsciiConstanteDescripcion
0VbNullChar o VbNullStringCaracter nulo
8No disponibleRetroceso
9vbTabTabulacion
10vbLfSiguiente linea
11vbVerticalTabTabulacion vertical
12vbFormFeedPagina siguiente
13vbCrRetorno de carro
13+10VbCrLfNueva linea
Anuncios

Para entender mejor estos conceptos vamos a hacer nuestro primer ejemplo con un simple generador de claves:

claves.vbs

randomize timer

dim texto

for a = 1 to 8
	caracter = int(rnd * 25) + 97
	texto = texto + chr(caracter)
next

wscript.echo texto 
Anuncios

En este caso usaremos un bucle for que cuenta de 1 a 8, despues para el caracter usaremos una variable llamada caracter, en la cual generamos un numero al azar entre 0 y 25 y le sumamos 97, que equivale al valor decimal de a en la tabla ASCII, nuestro siguiente paso sera comenzar a llenar a texto con los caracteres generados aleatoriamente por medio de la funcion chr, una vez terminado el bucle lo mostraremos en pantalla

Si lo van probando veran que siempre genera una clave distinta pero obviamente se puede mejorar mucho mas aunque como generador basico es completamente funcional, veamos un ejemplo donde veremos a asc en accion:

asc.vbs

dim texto
dim a
dim i

for a = Asc("A") to Asc("Z")
	texto = texto & " " & chr(a) & "=" & a
	i = i + 1
 	if i = 6 then
		texto = texto & vbCrLf
		i = 0
	end if
next

wscript.echo texto 
Anuncios

Para este caso usamos un for donde el valor minimo y maximo del contador sera establecido por las dos funciones Asc, ya que una devolvera el valor decimal de A y la otra de Z, luego llenaremos a texto primero con chr para ver a quien corresponde el valor de a y despues le pondremos al lado el valor de a, nuestro siguiente paso sera incrementar i, el siguiente condicional verifica si i es igual a 6, en caso de ser cierto procede a agregar una constante de nueva linea (vbCrLf) que equivaldria a chr(10) que usabamos antes y despues resetea a i al valor de 0, en caso de ser falsa la condicion sigue con el bucle, una vez terminado el bucle nos muestra en pantalla el contenido de texto

En este caso vemos a la perfeccion como funcionaron a la perfeccion las funciones Asc y Chr y nos permitieron devolver la informacion de ambas, antes de terminar con este tema puede suceder que trabajen con codigos UNICODE los cuales no voy a explicar aca para hacer tan tedioso a este post pero les comentare que para estos casos en lugar de usar Asc y Chr deberan usar AscW y ChrW, para ir finalizando les hablare de dos funciones.

Anuncios

Las funciones Ucase y Lcase que se encargan de transformar una cadena de texto todas en mayusculas o minusculas respectivamente, pero para que puede ser util? En general para cuando necesitamos hacer una busqueda en un texto y no tener problemas de coincidencias o para facilitar algun condicional, tomemos este codigo de este post:

dim respuesta

respuesta = inputbox("Deseas continuar (S/N)")

if respuesta = "s" or respuesta = "S" then 
	msgbox "Que bueno!"
elseif respuesta = "N" or respuesta = "n" then
	msgbox "Que mal!"
else
	msgbox "Che, solo S o N no ingreses cualquiera!"
end if

Y para optimizarlo vamos a modificarlo de la siguiente manera:

dim respuesta

respuesta = lcase(inputbox("Deseas continuar (S/N)"))

if respuesta = "s" then 
	msgbox "Que bueno!"
elseif respuesta = "n" then
	msgbox "Que mal!"
else
	msgbox "Che, solo S o N no ingreses cualquiera!"
end if

En este caso agregamos a lcase delante del inputbox lo cual implicara que ingresemos lo que ingresemos a respuesta se lo asignara en minuscula, con lo cual ya no debemos preocuparnos en los condicionales si respuesta es de un valor u otro sino simplemente con poner los que necesitamos en minusculas se activaran las mismas de forma correcta.

Anuncios

En resumen, hoy hemos visto una introduccion de cadenas de texto, como se pueden setear, como son, como podemos hacer pequeñas modificaciones que afectan a la misma, o no, como podemos trabajar en otras circunstancias con ellas y como podemos optimizar algunas condiciones, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes comprar mi libro sobre VBscript en Amazon

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00