Cuore Batti Cuore - Loris Reinhard - Radio Genius - Alex Damiani e-Thomas.net Network:
 
Il tuo IP: 38.103.63.60
 

Altro
Scarica

 

Sei in: Per i Webmaster - Corso di ASP - Funzioni interne di VbScript

Nel linguaggio VBScript, sono disponibili parecchie funzioni interne, cioè pronte e disponibili per effettuare un notevole numero di operazioni piuttosto comuni. La prima cosa che prendiamo in considerazione è il typecasting delle variabili. Può capitare di avere bisogno di modificare il subtipo di una variabile; per esempio se si ha una stringa il cui valore è "350" e la si vuole fare diventare un numero intero per compiere operazioni matematiche, oppure una stringa con valore "09/02/1968" la si vuole fare diventare a tutti gli effetti una variabile di subtipo data. Come vedremo non ci sono solo funzioni per il typecasting.
Il seguente codice ci fa capire meglio di cosa si sta parlando:

<%
    Dim varMyVar1, varMyVar2
    varMyVar1 = "200"
    varMyVar2 = "300"
    Response.Write varMyVar1 + varMyVar2 & "<br>"
    ' Conversione delle stringhe in numeri interi
    varMyVar1 = CInt(varMyVar1)
    varMyVar2 = CInt(varMyVar2)
    Response.Write varMyVar1 + varMyVar2
%>

La prima volta che si effettua la somma delle variabili si ottiene una stringa il cui valore è "200300", dopo la conversione in numeri interi il risultato è un intero che vale 500.

Vediamo una tabella riassuntiva di alcune funzioni di typecasting:

Funzione Sintassi Descrizione Esempio
CBool CBool(espressione) Ritorna un valore booleano corrispondente al valore di una espressione. Se l'espressione vale zero il risultato è falso altrimenti è vero. intCounter = 5
blnValue = CBool(intCounter)

blnValue è Vero
CByte CByte(espressione) Ritorna una espressione convertita ad un variant di subtipo byte. Si ha errore se il valore esce dal range accettabile per un Byte (da 0 a 255) dblValue = 5.456
bytValue = CByte(dblValue)

bytValue vale 5
CCur CCur(espressione) Ritorna una espressione convertita ad un variant di subtipo currency. Il risultato dipende dalle impostazioni internazionali del server. I numeri vengono formattati con l'appropriato separatore decimale e la quarta cifra dopo la virgola viene arrotondata per eccesso se la quinta cifra è superiore o uguale a 5. dblValue = 821.555790
curValue = CCur(dblValue)

curValue vale 821,5558
CDbl CDbl(espressione) Ritorna una espressione convertita ad un variant di subtipo double. Il risultato dipende dalle impostazioni internazionali del server. Il separatore delle cifre decimali è formattato a seconda di queste impostazioni. dblValue = CDbl(3.49)

dblValue diventa 3,49
CInt CInt(espressione) Ritorna una espressione convertita ad un variant di subtipo integer. Il risultato dipende dalle impostazioni internazionali del server. Il valore decimale viene prima arrotondato e poi scartato. Nel caso di numeri tipo 0.5, 1.5, 2.5 ecc... il numero viene arrotondato al numero pari più vicino. varValue = 5579.56
intValue = CInt(varValue)

intValue vale 5580
CLng CLng(espressione) Ritorna una espressione convertita ad un variant di subtipo long. Il risultato dipende dalle impostazioni internazionali del server. Il valore decimale viene prima arrotondato e poi scartato. varValue = 5579.56
lngValue = CLng(varValue)

lngValue vale 5580
CSng CSng(espressione) Ritorna una espressione convertita ad un variant di subtipo single. Il risultato dipende dalle impostazioni internazionali del server. varValue = 5.456
sngValue = CSng(varValue)

sngValue vale 5,456
CStr CStr(espressione) Ritorna una espressione convertita ad un variant di subtipo string. Il risultato dipende dalle impostazioni internazionali del server. Si ha errore se espressione vale Null. Valori di tipo numeric e err diventano numeri, valori booleani diventano Vero o Falso, le date vengono convertite al formato di tipo short (corto). strBool = CStr(True)
strDate = CStr(#1/1/01#)
strNum = CStr(5,45)

strBool vale "Vero"
strDate vale "01/01/2001"
strNum vale "5,45"

Gli esempi precedenti sono stati testati su un server con impostazioni italiane di default.

Vediamo una tabella riassuntiva di alcune funzioni matematiche:

Funzione Significato Esempio
Abs(numero) Valore assoluto Abs(-58)
Ris: 58
Atn(numero) Arcotangente 4 * Atn(1)
Ris: 3,14159265358979
Cos(numero)
numero in radianti
Coseno Cos(30 * 3.14 / 180)
Ris: 0,866158094405463
Exp(numero) e ^ numero (e = 2,718282) Exp(2)
Ris: 7,38905609893065
Fix(numero) Parte intera Fix(-7.6)
Ris: 7
Hex(numero) Esadecimale in base 10 Hex(200)
Ris: C8
Int(numero) Parte intera Int(-7.6)
Ris: 8
Log(numero) Logaritmo naturale Log(5)
Ris: 1,6094379124341
Oct(numero) Ottale in base 10 Oct(8)
Ris: 10
Rnd Numero casuale Randomize
Int(Rnd * 10)
Ris: nr. casuale >= 0
e < 10
Round(numero) Arrotonda a intero più prossimo Round(4.5)
Ris: 4

Round(4.51)
Ris: 5
Round(numero,decimali) Arrotonda al valore di decimali Round(4.515,2)
Ris: 4,51

Round(4.516,2)
Ris: 4,52
Sgn(numero) Segno numero < 0 = -1
numero = 0 = 0
numero > 0 = 1
Sin(numero) Seno Sin(30 * 3.14 / 180)
Ris: 0,499770102643102
Sqr(numero)
numero>0
Radice quadrata Sqr(9)
Ris: 3
Tan(numero) Tangente Tan(10)
Ris: 0,648360827459087

Esistono tante altre funzioni interne di VBScript relative a date, stringhe, formattazioni particolari ecc...
Vediamo l'uso di alcune di esse molto comuni, mentre per una lista completa conviene fare riferimento ad un manuale VBScript o a documentazione ufficiale Microsoft.

Funzioni di data e orario:
Date restituisce la data del giorno attuale
DatePart("h",Now) restituisce l'ora (es: 7 o 13 o 18 ....) dell'orario attuale
Segue un elenco dei valori che si possono inserire al posto di "h":
d - giorno
m - mese
n -  minuto
q - trimestre
s - secondo
w - giorno della settimana
ww - settimana dell'anno
y - giorno dell'anno
yyyy - anno
Day(Date) restituisce il giorno della data attuale
Time restituisce l'orario attuale
Hour(Time) restituisce l'ora dell'orario attuale
Minute(Time) restituisce i minuti dell'orario attuale
Second(Time) restituisce i secondi dell'orario attuale
IsDate(espressione) restituisce un variant di subtipo booleano
Esempio:
IsDate(Date) = Vero
IsDate("") = Falso
IsDate(#01/01/2002#) = Vero
MonthName(month, [abbreviato]) restituisce il nome del mese indicato da month
Esempio:
MonthName(Month(Date)) restituisce il nome del mese corrente
MonthName(Month(Date),True) restituisce il nome abbreviato del mese corrente
Now restituisce la data e l'ora attuale

Funzioni di stringa:
qualunque cosa faccia la nostra applicazione, spesso ci si trova a dover manipolare delle stringhe. Vi sono molte funzioni di stringa ed ora ne vediamo qualcuna nel dettaglio:

InStr([start,] string1, string2 [, compare])
ritorna un numero intero che indica la posizione della prima occorrenza di una parte di stringa all'interno di una stringa.

start (opzionale) è una qualunque espressione valida non negativa che indica la posizione di partenza della ricerca all'interno di string1. I valori non interi sono arrotondati. Questo argomento è richiesto se è specificato l'argomento compare.
string1 è la stringa nella quale vogliamo cercare.
string2 è la sub stringa che vogliamo trovare.
compare (opzionale) indica il metodo di comparazione da utilizzare, può essere 0 (zero ovvero vbBinaryCompare) per una ricerca case sensitive o 1 (uno ovvero vbTextCompare) per una ricerca non-case sensitive. Il valore di default è zero.

Note
Se start contiene Null si genera un errore di runtime. Se start è più grande della lunghezza di string2, viene restituito 0 (zero).

Esempio:

<%
Dim strText, lngStartPos, lngFoundPos, strSearchFor
strText = "Testo di prova per un test sulle stringhe"
Response.Write strText & "<br>"
lngStartPos = 1
strSearchFor = "t"
lngFoundPos = InStr(lngStartPos,strText,strSearchFor)
Do While lngFoundPos > 0
    Response.Write "Lettera t trovata in posizione " & lngFoundPos & "<br>"
    lngStartPos = lngFoundPos + 1
    lngFoundPos = InStr(lngStartPos,strText,strSearchFor)
Loop
%>

Il risultato finale è il seguente:

Testo di prova per un test sulle stringhe
Lettera t trovata in posizione 4
Lettera t trovata in posizione 23
Lettera t trovata in posizione 26
Lettera t trovata in posizione 35

Da notare che la prima T della frase non viene trovata perché non è stato specificato l'argomento di comparazione e quindi viene utilizzato quello di default, cioè zero, che effettua una ricerca case sensitive e quindi "T" è diverso da "t".

LCase(string) e UCase(string)
Queste due funzioni si utilizzano per convertire in lettere minuscole o maiuscole una stringa specificata.

Esempio:

<%
strText = "Lo chiamavano Trinità"
Response.Write LCase(strText) & "<br>"
Response.Write UCase(strText)
%>

Il risultato finale è il seguente:

lo chiamavano trinità
LO CHIAMAVANO TRINITà

Len(string)
La funzione Len restituisce il numero di caratteri di cui è composta una stringa compresi gli spazi; Len("Bella giornata") restituirà il valore 14.

Left(string, length) e Right(string, length)
Queste due funzioni restituiscono la parte sinistra o destra della stringa della lunghezza specificata dal valore length.

Esempio:

<%
strText = "Bella giornata"
Response.Write Left(strText,5) & "<br>"
Response.Write Right(strText,5)
%>

Il risultato finale è:

Bella
rnata

Mid(string, start[, length])
La funzione Mid restituisce una parte di string partendo dal carattere start e lunga il valore di length (opzionale).

Esempio:

<%
strText = "Bella giornata"
Response.Write Mid(strText,4) & "<br>"
Response.Write Mid(strText,4,6)
%>

Il risultato finale è:

la giornata
la gio

LTrim(string), RTrim(string) e Trim(string)
Queste funzioni servono nell'ordine a eliminare gli spazi bianchi a sinistra di una stringa, a destra di una stringa e da tutte e due le parti di una stringa.

Replace(expression, find, replacewith[, start[, count[, compare]]])
Questa funzione sostituisce una parte di una stringa con un'altra stringa un numero definito di volte.

expression è la stringa intera nella quale cercare la parte da sostituire.
find è la parte di stringa che si vuole sostituire.
replacewith è la stringa che si vuole utilizzare per la sostituzione.
start (opzionale) è il carattere espresso in numeri dal quale cominciare a cercare, il valore di default è 1 cioè inizio stringa.
count (opzionale) è il numero delle sostituzioni da effettuare, il valore di default è -1 che significa che verranno effettuate tutte le ricorrenze trovate.
compare (opzionale) indica il metodo di comparazione da utilizzare, può essere 0 (zero ovvero vbBinaryCompare) per una ricerca case sensitive o 1 (uno ovvero vbTextCompare) per una ricerca non-case sensitive. Il valore di default è zero.

Esempio:

<%
strText = "Bella giornata"
Response.Write Replace(strText,"Bella","Brutta")
%>

Il risultato è il seguente:

Brutta giornata

Split(expression[, delimiter[, count[, compare]]])
Questa funzione è molto comoda perché genera automaticamente un array di stringhe.

expression è la stringa da suddividere.
delimiter (opzionale) è il o i caratteri da prendere in considerazione per la suddivisione, se non specificato viene usato il carattere di spazio.
count (opzionale) è il numero di substringhe da ritornare.
compare (opzionale) indica il metodo di comparazione da utilizzare, può essere 0 (zero ovvero vbBinaryCompare) per una ricerca case sensitive o 1 (uno ovvero vbTextCompare) per una ricerca non-case sensitive. Il valore di default è zero.

Esempio:

<%
strText = "1;2;3;4;5;6;7;8;9;0"
arrMyArray = Split(strText,";",5)
For Each Item In arrMyArray
    Response.Write Item & "<br>"
Next
%>

Il risultato è il seguente:

1
2
3
4
5;6;7;8;9;0

Per finire questa sezione vediamo ora alcune funzioni di formattazione che sono funzioni che servono appunto per modificare l'aspetto di numeri, date, valute ecc...

FormatDateTime(date[, namedformat])

date è una qualunque data valida.
namedformat (opzionale) è un valore numerico che indica il formato di data/orario da utilizzare. Può avere i seguenti valori:
vbGeneralDate 0 formato data (se presente)  e ora (se presente) che utilizza la data corta e l'orario esteso presi dalle impostazioni locali del server
vbLongDate  1 formato data estesa presa dalle impostazioni locali del server
vbShortDate 2 formato data corta presa dalle impostazioni locali del server
vbLongTime 3 formato orario esteso preso dalle impostazioni locali del server
vbShortTime 4 formato orario corto preso dalle impostazioni locali del server

Esempio:

<%
Response.Write FormatDateTime(Now,vbGeneralDate) & "<br>"
Response.Write FormatDateTime(Now,vbLongDate) & "<br>"
Response.Write FormatDateTime(Now,vbShortDate) & "<br>"
Response.Write FormatDateTime(Now,vbLongTime) & "<br>"
Response.Write FormatDateTime(Now,vbShortTime) & "<br>"
%>

Il risultato su un server con le impostazioni italiane di default è il seguente:

02/01/2002 15.45.33
mercoledì 2 gennaio 2002
02/01/2002
15.45.33
15.45

FormatNumber(expression[, numdigitsafterdecimal[, includeleadingdigit[, useparensfornegativenumbers[, groupdigits]]]])
Questa funzione serve a formattare un numero.

expression è la variabile che vogliamo formattare
numdigitsafterdecimal (opzionale) è un valore numerico che indica quanti numeri decimali dopo la virgola vogliamo utilizzare, se non specificato è utilizzato il valore di default del Pannello di Controllo.
includeleadingdigit (opzionale) indica se si vuole utilizzare un zero all'inizio di valori frazionari.
useparensfornegativenumbers (opzionale) indica se i numeri negativi sono da scrivere fra parentesi.
groupdigits (opzionale) indica se si vuole utilizzare il separatore delle migliaia specificato nelle impostazioni internazionali del Pannello di Controllo.

Gli ultimi tre argomenti possono assumere i seguenti valori:
vbUseDefault 2 impostazioni di default prese dal Pannello di Controllo
vbTrue -1
vbFalse 0

Come detto in precedenza, conviene fare riferimento ad un manuale VBScript o a documentazione ufficiale Microsoft per una lista completa delle funzioni interne di VBScript.

Contattaci. Stampa questa pagina. Contattaci via SMS. e-Thomas.net © 2009 Tutti i diritti riservati
 

F.A.Q. - Chi Siamo - Sitemap - Aspetti legali - Privacy - Le nostre fonti - RSS

Utenti connessi: 5 - Visite: 436.622 dal 10/02/2004 - Visite medie giornaliere: 244