Toolbox Visual Basic

Mauro VB Homepage - Toolbox 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.

Torna a Toolbox

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.

Espandi tutto | Chiudi tutto

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
 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
Esempio di utilizzo
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
 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
Esempio di utilizzo
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
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
Esempio di utilizzo
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
 'verifica se è impostato l'attributo si sola lettura

  IsReadOnly = GetAttr(sFileName) And vbReadOnly

End Function
Esempio di utilizzo
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()

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
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.

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à)
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
Esempio di utilizzo
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à)
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
Esempio di utilizzo
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
  '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
Esempio di utilizzo
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
  '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
Esempio di utilizzo
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()

  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
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.

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
  '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
Esempio di utilizzo
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