http://digilander.libero.it/Cenati

Includere una libreria

home | e-mail e contatti | Introduzione al sito | Cosa e' e come imparare VbScript

 

 

 

 

 

Cosa è una libreria?

I linguaggi di programmazione più evoluti (e anche alcuni tra quelli meno evoluti) permettono di creare delle librerie di funzioni da richiamare all'occorrenza. Questo significa che posso scrivere delle porzioni di codice una sola volta e mettere nel mio programma un semplice riferimento per dirgli di andare a pescarle.

Ma significa anche che posso modificare la libreria una sola volta, per migliorare le prestazioni delle funzioni, e non dover correggere tutti i programmi che la utilizzano.

Se copiassi ogni volta le funzioni all'interno dei miei programmi, sarei invece costretto eventualmente a correggerli tutti.

Inoltre, alcune librerie più complesse possono essere state scritte da altri utenti. Io potrei avere solo la necessità di utilizzarle, senza necesariamente sapere o capire come funzionano.

Un esempio è dato dalle funzioni di gestione dei files che ho descritto in una pagina di questo sito. Usandole spesso, basta metterle in un file da includere e potrò usarle come se facessero parte del linguaggio stesso.

Come si include una libreria in VbScript?

A questa domanda molti hanno risposto che non è possibile. Hanno detto che bisogna usare un documento wsf, che divide il codice in "jobs" che permettono anche l'inclusione di librerie. In effetti, anche se non ne sono pratico, i file wsf permettono questo ed altro. Ad esempio permettono la convivenza tra codice VbScript e JScript.

Ma è possibile includere una libreria anche in VbScript.

Poniamo di avere la nostra libreria in un file chiamato c:\documenti\Giovanni\libreria.vbs

In realtà non è necessario che l'estensione sia vbs, dato che l'inclusione avviene leggendo il file come testo. Potrebbe benissimo avere estensione txt. L'importante è che sia puro testo.

Nel mio script potrei semplicemente mettere in testa una dichiarazione del tipo:

Include "c:\documenti\Giovanni\libreria.vbs"

E continuare tranquillamente a scrivere il programma. In qualsiasi momento potrò usare una delle funzioni che so essere contenute nella mia libreria.

Dove è il trucco? La funzione Include non fa parte del corredo di VbScript.

Prima della fine del programma dovrò infatti mettere il codice che permette l'inclusione:

Function Include(vbslibrary)
' http://digilander.libero.it/Cenati
' Codice vbs liberamente utilizzabile citando il sito.
  dim fso,f,s
  set fso=createobject("Scripting.FileSystemObject")
  set f=fso.OpenTextFile(vbslibrary)
  s=f.ReadAll
  f.Close
  ExecuteGlobal s
end function

Questo codice apre un file e ne legge le righe nella variabile "s". In particolare, apre proprio il file della libreria.

La funzione "ExecuteGlobal" è quella che ci interessa in particolare...

Permette di eseguire il comando o i comandi (se separati dai due punti o da ritorni a capo) contenuti nella variabile passata come parametro.

Quindi se s="msgbox n", il comando ExecuteGlobal s

è come se eseguisse msgbox n

L'uso di questa istruzione può essere molto pericoloso per la leggibilità del codice. Ad esempio si potrebbe decidere da qualche parte quale istruzione debba essere eseguita al termine di un processo, e solo alla fine dare un ExecuteGlobal per eseguirla. Ma in questo modo se il programma non funziona come deve, non si riesce bene a rintracciare il problema.

Ma per quello che serve a noi per includere una libreria di funzioni, è proprio una risorsa preziosa.

 

Cenati Giovanni

 

 
 

© Cenati Giovanni 2004/2010 - http://digilander.libero.it/Cenati - Reventlov at Katamail com

home | e-mail e contatti | Introduzione al sito | Cosa e' e come imparare VbScript