Toolbox Visual Basic
Presentiamo in questa sezione, per i programmatori in Visual Basic, versioni 5 o 6, strumenti idonei ad ottimizzare le loro applicazioni in termini di efficacia e funzionalità: si tratta di esempi di codici e di routines accompagnati da indicazioni sul loro funzionamento e sul loro utilizzo all'interno di un programma.
Il materiale messo a disposizione è totalmente gratuito e di libero utilizzo. Se questo codice viene redistribuito altrove si dovrà però citarne l'autore e la fonte.
Sezione Cartelle e files
Funzione ParsePath
A cosa serve e come funziona questo codice
Questo codice serve per eliminare, da un percorso (path) completo, il nome del file e dell'estensione.
La funzione, che deve essere richiamata passando obbligatoriamente come argomento stringa (sFullPath) il percorso completo da elaborare (es.
C:\Casa\Documenti\Tasse.doc), restituisce il percorso senza il nome del file e l'estensione (es. C:\Casa\Documenti\)
Quando e perchè usare questo codice
Questa funzione può essere usata quando ci sia la necessità di scorporare il nome del file presente in un percorso (path) completo.
Avvertenze e suggerimenti
Questa funzione è compatibile con tutte le versioni (4-5-6) di Visual Basic. La funzione restituisce il percorso completo di \ (backslash)
finale.
Private Function ParsePath(sFullPath As String) As String
Esempio di utilizzo
Dim i As Integer
For i = Len(sFullPath) To 1 Step -1
'esegue la scansione del percorso da destra verso sinistra fino a trovare
'la combinazione :\ (radice del percorso)
If InStr(":\", Mid$(sFullPath, i, 1)) Then
'estrae il solo percorso eliminando il nome del file (e relativa estensione)
ParsePath = Left$(sFullPath, i)
Exit Function
End If
Next i
End Function
Nell'esempio che segue ipotizziamo di avere la necessità di estrarre il solo percorso da un path completo tipo:
C:\Cartella\Sottocartella\Configurazione.ini
Ecco come richiamare la funzione ParsePath:
MyPath = ParsePath("C:\Cartella\Sottocartella\Configurazione.ini")
(MyPath conterrà la stringa: "C:\Cartella\Sottocartella\" corrispondente al percorso completo senza il nome del file e relativa estensione).
Funzione ParseFileName
A cosa serve e come funziona questo codice
Questo codice serve per ricavare il nome di un file (comprensivo di estensione) da un percorso (path) completo.
La funzione, che deve essere richiamata passando obbligatoriamente come argomento stringa (sFullPath) il percorso completo da elaborare (es.
C:\Casa\Documenti\Tasse.doc), restituisce il nome e l'estensione (es. Tasse.doc) del file presente nel percorso passato come argomento.
Quando e perchè usare questo codice
Questa funzione può essere usata quando ci sia la necessità di scorporare il nome del file presente in un percorso (path) completo.
Avvertenze e suggerimenti
Questa funzione, contrariamente ad altre similari, è compatibile con tutte le versioni (4-5-6) di Visual Basic
Private Function ParseFileName(sFullPath As String) As String
Esempio di utilizzo
Dim i As Integer
For i = 1 To Len(sFullPath)
'esegue la scansione del percorso da destra verso sinistra fino a trovare \ (backslash)
If Left$(Right$(sFullPath, i), 1) = "\" Then
'estrae il nome del file compresa l'estensione
ParseFileName = Right$(sFullPath, i - 1)
Exit Function
End If
Next i
End Function
Nell'esempio che segue ipotizziamo di avere la necessità di estrarre il nome del file da un percorso completo tipo:
C:\Cartella\Sottocartella\Configurazione.ini
Ecco come richiamare la funzione ParseFileName:
MyFile = ParseFileName("C:\Cartella\Sottocartella\Configurazione.ini")
(MyFile conterrà la stringa: "Configurazione.ini" che corrisponde al nome e del file e alla sua estensione)
Funzione GetExtension
A cosa serve e come funziona questo codice
Questo codice serve per leggere l'estensione di un file (anche se il file è inserito in un percorso (path) completo).
La funzione, che deve essere richiamata passando obbligatoriamente come argomento (sFileName) la stringa contenente il nome del file (es.
C:\Casa\Documenti\Tasse.doc, oppure Tasse.doc), restituisce la sola estensione (senza il '.' puntino separatore) del file (esempio: doc).
Quando e perchè usare questo codice
Questa funzione può essere usata quando ci sia la necessità di ricavare il nome dell'estensione dal nome del file.
Avvertenze e suggerimenti
Questa funzione è compatibile con tutte le versioni (4-5-6) di Visual Basic.
Private Function GetExtension(sFileName As String) As String
Esempio di utilizzo
Dim i As Integer
For i = Len(sFileName) To 1 Step -1
'esegue la scansione del percorso da destra verso sinistra fino a trovare . (il puntino)
If InStr(".", Mid$(sFileName, i, 1)) Then
'estrae l'estensione del file
GetExtension = Right$(sFileName, Len(sFileName) - i)
Exit Function
End If
Next i
End Function
Ecco come utilizzare la funzione GetExtension:
Estensione = GetExtension("C:\Cartella\Sottocartella\Configurazione.ini")
(Estensione conterrà la stringa: "ini" che corrisponde all'estensione del file.
Funzione IsReadOnly
A cosa serve e come funziona questo codice
Questo codice serve per verificare se è impostato l'attributo di sola lettura (Read only) in un determinato file.
La semplicissima funzione, che deve essere richiamata passando obbligatoriamente come argomento (sFileName) il nome completo del file su cui
eseguire la verifica, restituisce True, in caso sia impostato l'attributo di sola lettura, oppure False, in caso contrario.
Quando e perchè usare questo codice
Questa funzione deve essere usata per evitare errori quando abbiamo la necessità di modificare un file. Un file con l'attributo di sola
lettura, infatti, non è modificabile , quindi, se provassimo a farlo verrebbe generato un errore di run time (errore 75) "bloccante".
Avvertenze e suggerimenti
Prima di utilizzare questa funzione, occorre sempre accertarsi della presenza del file da testare (vedi funzione FileExist). L'attributo di
sola lettura (read only) di un file può essere impostato (oltre che "volontariamente") anche a seguito di eventuali "restore" da unità di
backup o da ripristini manuali di file presenti in unità ROM (Read Only Memory).
Function IsReadOnly(sFileName As String) As Boolean
Esempio di utilizzo
'verifica se è impostato l'attributo si sola lettura
IsReadOnly = GetAttr(sFileName) And vbReadOnly
End Function
Nell'esempio che segue immaginiamo di voler modificare un file presente in una certa unità. Come raccomandato in precedenza, prima
verifichiamo l'effettiva presenza del file, e poi verifichiamo la possibilità di poterlo modificare.
Ecco come richiamare la funzione IsReadOnly:
Sub ScriviSuFile()
Nota: l'attributo di sola lettura (read only) di un file può essere modificato , se il supporto dove risiede il file lo consente,
utilizzando l'istruzione di Visual Basic SetAttr.
Dim sFileName As String
sFileName = "C:\percorso\miofile.txt"
If FileExist(sFileName) Then 'verifica la presenza del file
'verifica se l'attributo di sola lettura è impostato
If IsReadOnly(sFileName) Then
MsgBox "impossibile modificare il file. File di sola lettura"
Else 'l'attributo di sola lettura NON è impostato
'codice di elaborazione
End If
Else 'file non presente
MsgBox "Impossibile trovare il file."
End If
End Sub
Funzione GetWinDir
A cosa serve e come funziona questo codice
Questo codice serve per leggere il percorso della directory principale di Windows, ovvero dov'è installato Windows.
La funzione, che utilizza l'API (Application Programming Interface) GetWindowsDirectory, retituisce la lunghezza della stringa
restituita o, in caso di errore, 0 (zero). I due argomenti lpBuffer e nSize servono rispettivamente per ricevere la stringa con
il percorso e impostare la lunghezza, in caratteri, di lpBuffer.
Quando e perchè usare questo codice
Questa funzione deve essere usata quando abbiamo la necessità di sapere il percorso dov'è installato Windows. Non si deve dare per scontato,
infatti, che la directory di windows, sia necessariamente "C:\Windows".
Avvertenze e suggerimenti
La directory di Windows può rappresentare un riferimento univoco e sicuro dove scrivere eventuali file di configurazione o di dati di
applicazioni che, per loro natura, possono essere lanciate e utilizzate direttamente da supporti esterni (tipo floppy, CD, ecc.). Nel caso,
poi, di supporti "ReadOnly" (CD ROM) questa scelta diventa indispensabile, visto l'impossibilità di scrivere direttamente sul supporto stesso.
'Dichiarazione della funzione API (sostituire Private con Public in funzione delle necessità)
Esempio di utilizzo
Private Declare Function GetWindowsDirectory Lib "kernel32.dll" Alias "GetWindowsDirectoryA" _
(ByVal lpBuffer As String, ByVal nSize As Long) As Long
Function GetWinDir() As string
'spazio necessario a ricevere la stringa
Const Max_Path As Long = 260
'variabile che riceve il percorso dov'è installato Windows
Dim windir As String
'variabile che riceve la lunghezza della stringa di ritorno
Dim SLength As long
'predispone lo spazio necessario per la stringa
windir = Space$(Max_Path)
'legge la directory di Windows
SLength = GetWindowsDirectory(windir, Max_Path)
'se non ci sono errori (SLength > 0) estrae la stringa e la assegna alla funzione
If SLength > 0 Then GetWinDir = Left$(windir, SLength)
End Function
Ecco come richiamare la funzione GetWinDir:
MsgBox GetWinDir
Funzione GetTempDir
A cosa serve e come funziona questo codice
Questo codice serve per leggere il percorso della directory temporanea che Windows mette a disposizione per la memorizzazione transitoria dei
dati (files).
La funzione, che utilizza l'API (Application Programming Interface) GetTempPath, ritorna la lunghezza della stringa restituita o, in
caso di errore, 0 (zero). I due argomenti nBufferLength e lpBuffer servono rispettivamente per impostare la lunghezza, in
caratteri, e ricevere la stringa con il percorso.
Quando e perchè usare questo codice
Questa funzione deve essere usata quando, dovendo scrivere in modo temporaneo dei files, abbiamo la necessità di avere un spazio appropriato
per eseguire l'operazione. Usare sempre questa funzione prima di accedere alla directory dei file temporanei a MAI dare per scontato che la
questa direcotory si trovi nel percorso "canonico" C:\Windows\Temp o similare.
Avvertenze e suggerimenti
Mai utilizzare la direcory temporanea per memorizzare in modo permanente dati! Il contenuto di questo percorso, infatti, viene spesso
eliminato manualmente o in automatico, da ogni singolo utente.
'Dichiarazione della funzione API (sostituire Private con Public in funzione delle necessità)
Esempio di utilizzo
Private Declare Function GetTempPath Lib "kernel32.dll" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Function GetTempDir() As string
'spazio necessario a ricevere la stringa
Const Max_Path As Long = 260
'variabile che riceve il percorso della cartella temporanea
Dim TempDir As String
'variabile che riceve la lunghezza della stringa di ritorno
Dim SLength As long
'predispone lo spazio necessario per la stringa
TempDir = Space$(Max_Path)
'legge il percorso della directory temporanea
SLength = GetTempPath(MAX_PATH, TempDir)
'se non ci sono errori (SLength > 0) estrae la stringa e la assegna alla funzione
if SLength> 0 then GetTempDir = Left$(TempDir, SLength)
End Function
Ecco come richiamare la funzione GetTempDir:
MsgBox GetTempDir
Funzione AppPath
A cosa serve e come funziona questo codice
Questo codice serve per ricavare le informazioni relative al percorso di una applicazione.
La funzione verifica e, se necessario, aggiunge il simbolo "\" barra inversa o backslash, alla fine della stringa restituita dalla proprietà
App.Path dell'oggetto App.
Il valore restituito dalla proprietà Path è una stringa che indica un percorso tipo: A:\ o C:\ o C:\Windows quindi, nel caso di percorsi
diversi dalla root principale (A: C: D:) del drive, occorre sempre aggiungere, prima del nome del file, la barra \
Quando e perchè usare questo codice
Questa funzione deve essere usata quando, all'interno del nostro codice, richiamiamo un file presente sul disco.
Avvertenze e suggerimenti
Prima di utilizzare questa funzione è buona norma verificare la presenza del file da caricare (vedi funzione FileExist)
Private Function AppPath() As String
Esempio di utilizzo
'legge il percorso corrente
AppPath = App.Path
'verifica se l'ultimo carattere presente nella stringa (AppPath) è \ altrimenti lo aggiunge.
If Right$(AppPath, 1) <> "\" Then AppPath = AppPath & "\"
End Function
Nell'esempio che segue ipotizziamo di avere la necessità di caricare, da files esterni presenti nello stessa cartella dove si trova il nostro
programma, alcune immagni che verranno visualizzate in un controllo "image" di una nostra applicazione.
Ecco come richiamare la funzione AppPath:
Image1.Picture = LoadPicture(AppPath & "Immagine.bmp")
Funzione FileExist
A cosa serve e come funziona questo codice
Questo codice serve per verificare che un file esista e sia effettivamente presente in un determinato percorso.
La funzione, che deve essere richiamata passando obbligatoriamente come argomento (FileName) il nome completo del file da verificare,
restituisce True, in caso di successo, ovvero il file esiste, oppure False, in caso contrario (il file non esiste o il percorso non è
corretto).
Quando e perchè usare questo codice
Questa funzione deve essere usata quando, all'interno del nostro codice, richiamiamo un file presente sul disco.
Avvertenze e suggerimenti
L'utizzo di questa funzione, non solo evita gli errori dovuti al tentativo di apertura di files non disponibili, ma consente anche di gestire
nel modo ritenuto più opportuno il problema (esempio: visualizzazione di messaggi informativi o esecuzione di codice alternativo).
Function FileExist(FileName As String) As Boolean
Esempio di utilizzo
'in caso di errore continua l'elaborazione del codice
On Error Resume Next
'verifica che non si tratti di una directory
FileExist = (GetAttr(FileName) And vbDirectory) = 0
'in caso di errore o in caso l'argomento FileName
'sia una directory, la funzione restituisce False
End Function
Nell'esempio che segue immaginiamo di voler riprodurre un suono utilizzando uno dei files wave normalmente (ma non sicuramente, e per questo
utilizziamo la funzione FileExist) presenti nella cartella di Windows.
Ecco come richiamare la funzione FileExist:
Sub RiproduciSuono()
Nota: in questo esempio è stato presupposto che il sistema operativo si trovi nel percorso "canonico" (C:\Windows) ma, di norma, è sempre
consigliabile eseguire preventivamente (con l'apposita funzione) una verifica.
Dim FileDaSuonare As String
FileDaSuonare = "C:\Windows\Media\Chord.wav"
If FileExist(FileDaSuonare) Then 'se la funzione restituisce true (vero)
' codice per la riproduzione del file
Else 'la funzione ha restituito false (falso)
'eventuale codice per altre elaborazioni
End If
End Sub
Funzione DirExist
A cosa serve e come funziona questo codice
Questo codice serve per verificare che una directory esista e sia effettivamente presente in un determinato percorso.
La funzione, che deve essere richiamata passando obbligatoriamente come argomento (DirName) il percorso completo della directory da
verificare, restituisce True, in caso di successo, ovvero la directory esiste, oppure False, in caso contrario (la directory non esiste o il
percorso non è corretto).
Quando e perchè usare questo codice
Questa funzione deve essere usata quando abbiamo la necessità di sapere se è presente una certa diectory nel sistema che ospita la nostra
applicazione.
Avvertenze e suggerimenti
L'utizzo di questa funzione, non solo evita gli errori dovuti al tentativo di accesso ad un percorso inesistente, ma consente anche di
gestire nel modo ritenuto più opportuno il problema (esempio: visualizzazione di messaggi informativi o esecuzione di codice alternativo).
Function DirExist(DirName As String) As Boolean
Esempio di utilizzo
'in caso di errore continua l'elaborazione del codice
On Error Resume Next
'legge l'attributo e verifica che non si tratti di un file
DirExist = GetAttr(DirName) And vbDirectory
'in caso di errore o in caso l'argomento DirName
'non sia una directory, la funzione restituisce False
End Function
Nell'esempio che segue immaginiamo di dover creare una nuova directory e verificarne l'effettiva creazione.
Ecco come richiamare la funzione DirExist:
Sub CreaDirectory()
Dim DirDaCreare As String
DirDaCreare = "C:\MiaDirectory"
MkDir DirDaCreare 'crea la directory
If DirExist(DirDaCreare) Then 'se la funzione restituisce true (vero)
' la directory è stata creata...
Else 'la funzione ha restituito false (falso)
'eventuale codice per altre elaborazioni
End If
End Sub