Verificare l'esistenza di una directory: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| (Una versione intermedia di uno stesso utente non è mostrata) | |||
| Riga 5: | Riga 5: | ||
Esempio pratico: | Esempio pratico: | ||
Public Sub Main() | |||
Dim ris, cartella As String | Dim ris, cartella As String | ||
| Riga 15: | Riga 15: | ||
Print "La Directory "; cartella; ris; " esiste !" | Print "La Directory "; cartella; ris; " esiste !" | ||
End | |||
Si può utilizzare anche la funzione "IsDir()". | Si può utilizzare anche la funzione "IsDir()". | ||
<BR>Se il file con il nome del percorso non esite, o se il file non è una directory, allora la funzione "IsDir()" restituisce ''Falso''. | <BR>Se il file con il nome del percorso non esite, o se il file non è una directory, allora la funzione "IsDir()" restituisce ''Falso''. | ||
Public Sub Main() | |||
Dim ris, cartella As String | Dim ris, cartella As String | ||
| Riga 28: | Riga 28: | ||
Print "Il percorso "; cartella; ris; " è una Directory !" | Print "Il percorso "; cartella; ris; " è una Directory !" | ||
End | |||
==Uso della funzione esterna | ==Uso della funzione esterna "opendir()"== | ||
Un'altra modalità prevede l'uso della funzione esterna "[http://man7.org/linux/man-pages/man3/opendir.3.html opendir()]", dichiarata nel file header "''/usr/include/dirent.h'' ". | Un'altra modalità prevede l'uso della funzione esterna "[http://man7.org/linux/man-pages/man3/opendir.3.html opendir()]", dichiarata nel file header "''/usr/include/dirent.h'' ". | ||
<BR>Tale funzione esterna restituisce un ''Puntatore'' valido, se non ha riscontrato errori nel tentativo di accesso alla ''Dyrectory'' impostata, altrimenti ritorna ''NULL'', che in Gambas corrisponde, come valore predefinito di una variabile di tipo ''Puntatore'', allo zero (0). | <BR>Tale funzione esterna restituisce un ''Puntatore'' valido, se non ha riscontrato errori nel tentativo di accesso alla ''Dyrectory'' impostata, altrimenti ritorna ''NULL'', che in Gambas corrisponde, come valore predefinito di una variabile di tipo ''Puntatore'', allo zero (0). | ||
| Riga 42: | Riga 42: | ||
Public Sub Main() | |||
Dim cartella As String | Dim cartella As String | ||
Dim drc As Pointer | Dim drc As Pointer | ||
cartella = "<FONT Color= | cartella = "<FONT Color=darkgreen>''/cartella/da/verificare''</font>" | ||
drc = opendir(cartella) | drc = opendir(cartella) | ||
If drc == 0 Then Error.Raise("Directory inesistente !") | If drc == 0 Then Error.Raise("Directory inesistente !") | ||
End | |||
| Riga 92: | Riga 92: | ||
Public Sub Main() | |||
Dim i As Integer | Dim i As Integer | ||
| Riga 98: | Riga 98: | ||
Dim percorso, s As String | Dim percorso, s As String | ||
percorso = "<FONT Color= | percorso = "<FONT Color=darkgreen>''/cartella/da/verificare''</font>" | ||
i = <FONT color=#B22222>__xstat</font>(_STAT_VER_LINUX, percorso, st) | i = <FONT color=#B22222>__xstat</font>(_STAT_VER_LINUX, percorso, st) | ||
| Riga 105: | Riga 105: | ||
If st.st_mode And S_IFDIR Then Print percorso; " è una Directory." | If st.st_mode And S_IFDIR Then Print percorso; " è una Directory." | ||
End | |||
Versione attuale delle 17:49, 24 giu 2024
Per verificare se una Directory esiste, si possono adottare alcune modalità.
Uso delle risorse di Gambas
Si può utilizzare la funzione "Exist()", la quale ritorna vero se il file o la cartella, indicati nel suo parametro, sono esistenti.
Esempio pratico:
Public Sub Main()
Dim ris, cartella As String
cartella = "/tmp"
If Not Exist(cartella) Then ris = " non"
Print "La Directory "; cartella; ris; " esiste !"
End
Si può utilizzare anche la funzione "IsDir()".
Se il file con il nome del percorso non esite, o se il file non è una directory, allora la funzione "IsDir()" restituisce Falso.
Public Sub Main()
Dim ris, cartella As String
cartella = "/tmp"
If Not IsDir(cartella) Then ris = " non"
Print "Il percorso "; cartella; ris; " è una Directory !"
End
Uso della funzione esterna "opendir()"
Un'altra modalità prevede l'uso della funzione esterna "opendir()", dichiarata nel file header "/usr/include/dirent.h ".
Tale funzione esterna restituisce un Puntatore valido, se non ha riscontrato errori nel tentativo di accesso alla Dyrectory impostata, altrimenti ritorna NULL, che in Gambas corrisponde, come valore predefinito di una variabile di tipo Puntatore, allo zero (0).
Library "libc:6"
' DIR *opendir (const char *__name)
' Open a directory stream on NAME.
Private Extern opendir(name As String) As Pointer
Public Sub Main()
Dim cartella As String
Dim drc As Pointer
cartella = "/cartella/da/verificare"
drc = opendir(cartella)
If drc == 0 Then Error.Raise("Directory inesistente !")
End
Uso della funzione esterna "stat()"
Un'altra modalità prevede l'uso della funzione esterna "stat()", dichiarata nel file header "/usr/include/x86_64-linux-gnu/sys/stat.h ".
Per utilizzare la funzione esterna "stat()", bisognerà attenersi in Gambas strettamente a quanto già precisato nella pagina di questa Wiki: stat ().
Mostriamo un esempio pratico per verificare l'esistenza di una Directory:
Library "libc:6"
Public Struct stat_
st_dev As Long
st_ino As Long
st_nlink As Long
st_mode As Integer
st_uid As Integer
st_gid As Integer
__pad0 As Integer
st_rdev As Long
st_size As Long
st_blksize As Long
st_blocks As Long
st_atime As Long
st_atimensec As Long
st_mtime As Long
st_mtimensec As Long
st_ctime As Long
st_ctimensec As Long
__glibc_reserved[3] As Long
End Struct
Private Const _STAT_VER_LINUX as Integer = 1
Private Const S_IFDIR As Integer = 16384
' int __xstat (_STAT_VER, __path, __statbuf)
' Get file attributes for FILE and put them in BUF.
Private Extern __xstat(_STAT_VER As Integer, __path As String, __statbuf As stat_) As Integer
Public Sub Main()
Dim i As Integer
Dim st As New stat_
Dim percorso, s As String
percorso = "/cartella/da/verificare"
i = __xstat(_STAT_VER_LINUX, percorso, st)
If i < 0 Then Error.Raise("Percorso inesistente !")
If st.st_mode And S_IFDIR Then Print percorso; " è una Directory."
End