Differenze tra le versioni di "Conoscere il file referenziato da un collegamento simbolico"

Da Gambas-it.org - Wikipedia.
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 3: Riga 3:
 
Per conoscere a quale file punta tale ''collegamento simbolico'', in Gambas è possibile utilizzare almeno due modalità.
 
Per conoscere a quale file punta tale ''collegamento simbolico'', in Gambas è possibile utilizzare almeno due modalità.
  
 
+
===Usare la Proprietà ".Link" della Classe ''Stat''===
===utilizzando la proprietà ''.Link'' della Classe ''Stat''===
+
Questa prima modalità utilizza le sole funzioni di Gambas, ed in particolare la Proprietà ".Link" della Classe ''Stat'' .  
Questa prima modalità utilizza le sole funzioni di Gambas, ed in particolare la proprietà ''.Link'' della Classe ''Stat'' .  
 
  
 
Mostriamo un semplice esempio:
 
Mostriamo un semplice esempio:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim s As String
 
   Dim s As String
 
   
 
   
  s = Stat("''/percorso/del/collegamento/simbolico''").Link
+
  s = Stat("<FONT Color=gray>''/percorso/del/collegamento/simbolico''</font>").Link
 
   
 
   
  Print s
+
  Print s
 
   
 
   
  '''End'''
+
  End
  
  
 
+
===Usare alcune funzioni esterne del API di ''Libgio''===
===utilizzando alcune funzioni esterne del API di ''Libgio''===
 
 
Questa seconda modalità più complessa e lunga della precedente, prevede l'utilizzo di alcune funzioni esterne del API della libreria ''Libgio'', appartenente alla risorsa GNOME.
 
Questa seconda modalità più complessa e lunga della precedente, prevede l'utilizzo di alcune funzioni esterne del API della libreria ''Libgio'', appartenente alla risorsa GNOME.
  
Sarà necessario nell'applicazione Gambas richiamare la libreria dinamica e condivisa: "''libgio-2.0.so.0.4002.0''"
+
Sarà necessario nell'applicazione Gambas richiamare la libreria condivisa: "''libgio-2.0.so.0.7200.4'' ".
 
 
  
 
Mostriamo un semplice esempio:
 
Mostriamo un semplice esempio:
  Library "libgio-2.0:0.4002.0"
+
  Library "libgio-2.0:0.7200.4"
 
   
 
   
 
  <FONT Color=gray>' ''GFile * g_file_new_for_path (const char *path)''
 
  <FONT Color=gray>' ''GFile * g_file_new_for_path (const char *path)''
Riga 42: Riga 39:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim Gf, info As Pointer
 
   Dim Gf, info As Pointer
 
   Dim s As String
 
   Dim s As String
 
   
 
   
  Gf = g_file_new_for_path("''/percorso/del/collegamento/simbolico''")
+
  Gf = g_file_new_for_path("<FONT Color=gray>''/percorso/del/collegamento/simbolico''</font>")
 +
  If Gf == 0 Then Error.Raise("Errore !")
 
   
 
   
  info = g_file_query_info(Gf, "standard::symlink-target", 0, 0, 0)
+
  info = g_file_query_info(Gf, "standard::symlink-target", 0, 0, 0)
 +
  If info == 0 Then Error.Raise("Errore !")
 
    
 
    
  s = g_file_info_get_symlink_target(info)
+
  s = g_file_info_get_symlink_target(info)
 +
  Print s
 
   
 
   
  Print s
+
End
+
 
'''End'''
+
 
  
 
=Riferimenti=
 
=Riferimenti=
* https://developer.gnome.org/gio/stable/GFile.html
+
* https://docs.gtk.org/gio/?q=g_file
* https://developer.gnome.org/gio/stable/GFileInfo.html
 

Versione attuale delle 06:50, 31 lug 2023

Un collegamento simbolico è un particolare file che fa riferimento, punta ad un altro file.

Per conoscere a quale file punta tale collegamento simbolico, in Gambas è possibile utilizzare almeno due modalità.

Usare la Proprietà ".Link" della Classe Stat

Questa prima modalità utilizza le sole funzioni di Gambas, ed in particolare la Proprietà ".Link" della Classe Stat .

Mostriamo un semplice esempio:

Public Sub Main()

 Dim s As String

 s = Stat("/percorso/del/collegamento/simbolico").Link

 Print s

End


Usare alcune funzioni esterne del API di Libgio

Questa seconda modalità più complessa e lunga della precedente, prevede l'utilizzo di alcune funzioni esterne del API della libreria Libgio, appartenente alla risorsa GNOME.

Sarà necessario nell'applicazione Gambas richiamare la libreria condivisa: "libgio-2.0.so.0.7200.4 ".

Mostriamo un semplice esempio:

Library "libgio-2.0:0.7200.4"

' GFile * g_file_new_for_path (const char *path)
' Constructs a GFile for a given path.
Private Extern g_file_new_for_path(path As String) As Pointer

' GFileInfo * g_file_query_info (GFile *file, const char *attributes, GFileQueryInfoFlags flags, GCancellable *cancellable, GError **error)
' Gets the requested information about specified file.
Private Extern g_file_query_info(Gfile As Pointer, attributes As String, flags As Integer, cancellable As Pointer, GError As Pointer) As Pointer

' const char * g_file_info_get_symlink_target (GFileInfo *info)
' Gets the symlink target for a given GFileInfo.
Private Extern g_file_info_get_symlink_target(Ginfo As Pointer) As String


Public Sub Main()

 Dim Gf, info As Pointer
 Dim s As String

 Gf = g_file_new_for_path("/percorso/del/collegamento/simbolico")
 If Gf == 0 Then Error.Raise("Errore !")

 info = g_file_query_info(Gf, "standard::symlink-target", 0, 0, 0)
 If info == 0 Then Error.Raise("Errore !")
  
 s = g_file_info_get_symlink_target(info)
 Print s

End


Riferimenti