Differenze tra le versioni di "Comprimere un file in un file compresso .zip mediante le funzioni esterne del API di libzip"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per comprimere un file in un file compresso .zip mediante le funzioni esterne del API di ''libzip'', è necessario richiamare in Gambas ed avere installata nel proprio sistema la libreria dinamica condivisa: "''libzip.so.2.1.0''"
+
Per comprimere un file in un file compresso .zip mediante le funzioni esterne del API di ''libzip'', è necessario richiamare in Gambas ed avere installata nel proprio sistema la libreria condivisa: "''libzip.so.5.0'' "
  
 
Vediamo di seguito un esempio pratico debitamente commentato:
 
Vediamo di seguito un esempio pratico debitamente commentato:
  Library "libzip:2.1.0"
+
  Library "libzip:5.0"
 
   
 
   
 
  Private Const ZIP_CREATE As Integer = 1
 
  Private Const ZIP_CREATE As Integer = 1
Riga 30: Riga 30:
 
    
 
    
 
  <FONT Color=gray>' ''Definisce il percorso del file compresso .zip da creare:''</font>
 
  <FONT Color=gray>' ''Definisce il percorso del file compresso .zip da creare:''</font>
  zip = zip_open("<FONT Color=gray>''/percorso/del/file.zip''</font>", ZIP_CREATE, VarPtr(err))
+
  zip = zip_open("<FONT Color=gray>''/percorso/del/file.zip''</font>", ZIP_CREATE, VarPtr(err))
  If zip = 0 Then
+
  If zip == 0 Then
    zip_close(zip)
+
    zip_close(zip)
    Error.Raise("Impossibile creare il file 'zip' !")
+
    Error.Raise("Impossibile creare il file 'zip' !")
  Endif
+
  Endif
 
    
 
    
 
  <FONT Color=gray>' ''Individua il file, da comprimere, nel suo intero percorso:''</font>
 
  <FONT Color=gray>' ''Individua il file, da comprimere, nel suo intero percorso:''</font>
  src = zip_source_file(zip, "<FONT Color=gray>''/percorso/e/nome/del/file/da/comprimere''</font>", 0, 0)
+
  src = zip_source_file(zip, "<FONT Color=gray>''/percorso/e/nome/del/file/da/comprimere''</font>", 0, 0)
  If src = 0 Then
+
  If src == 0 Then
    zip_close(zip)
+
    zip_close(zip)
    Error.Raise("Impossibile creare il sorgente dati del file da comprimere !")
+
    Error.Raise("Impossibile creare il sorgente dati del file da comprimere !")
  Endif
+
  Endif
 
    
 
    
  <FONT Color=gray>' ''Inserisce il file, definendone il nome, all'interno del file compresso .zip.''
+
  <FONT Color=gray>' ''Inserisce il file, definendone il nome e la sua eventuale estensione, all'interno del file compresso .zip.''
 
  ' ''E' possibile anche creare una cartella all'interno del file .zip ed inserirvi il file da comprimere.''</font>
 
  ' ''E' possibile anche creare una cartella all'interno del file .zip ed inserirvi il file da comprimere.''</font>
  l = zip_add(zip, "<FONT Color=gray>''il_solo_nome_del_file_da_comprimere''</font>", src)
+
  l = zip_add(zip, "<FONT Color=gray>''il_solo_nome_del_file_da_comprimere+la_sua_eventuale_estensione''</font>", src)
  If l < 0 Then
+
  If l < 0 Then
    zip_close(zip)
+
    zip_close(zip)
    Error.Raise("Impossibile comprimere il file prescelto !")
+
    Error.Raise("Impossibile comprimere il file prescelto !")
  Endif
+
  Endif
 
    
 
    
 
  <FONT Color=gray>' ''Chiude la libreria:''</font>
 
  <FONT Color=gray>' ''Chiude la libreria:''</font>
  zip_close(zip)
+
  zip_close(zip)
 
    
 
    
 
  '''End'''
 
  '''End'''
 
  
  

Versione attuale delle 17:48, 1 dic 2021

Per comprimere un file in un file compresso .zip mediante le funzioni esterne del API di libzip, è necessario richiamare in Gambas ed avere installata nel proprio sistema la libreria condivisa: "libzip.so.5.0 "

Vediamo di seguito un esempio pratico debitamente commentato:

Library "libzip:5.0"

Private Const ZIP_CREATE As Integer = 1

' struct zip *zip_open(const char *, int, int *)
' Open zip archive.
Private Extern zip_open(path As String, flags As Integer, errorp As Pointer) As Pointer

' struct zip_source *zip_source_file(struct zip *, const char *, zip_uint64_t, zip_int64_t)
' Create data source from a file.
Private Extern zip_source_file(archive As Pointer, fname As String, start As Long, len As Long) As Pointer

' zip_int64_t zip_add(struct zip *, const char *, struct zip_source *)
' Add file to zip archive or replace file in zip archive.
Private Extern zip_add(archive As Pointer, path As String, source As Pointer) As Long

' int zip_close(struct zip *)
' Close zip archive.
Private Extern zip_close(archive As Pointer) As Integer


Public Sub Main()

 Dim zip, src As Pointer
 Dim err As Integer
 Dim l As Long
  
' Definisce il percorso del file compresso .zip da creare:
 zip = zip_open("/percorso/del/file.zip", ZIP_CREATE, VarPtr(err))
 If zip == 0 Then
   zip_close(zip)
   Error.Raise("Impossibile creare il file 'zip' !")
 Endif
  
' Individua il file, da comprimere, nel suo intero percorso:
 src = zip_source_file(zip, "/percorso/e/nome/del/file/da/comprimere", 0, 0)
 If src == 0 Then
   zip_close(zip)
   Error.Raise("Impossibile creare il sorgente dati del file da comprimere !")
 Endif
  
' Inserisce il file, definendone il nome e la sua eventuale estensione, all'interno del file compresso .zip.
' E' possibile anche creare una cartella all'interno del file .zip ed inserirvi il file da comprimere.
 l = zip_add(zip, "il_solo_nome_del_file_da_comprimere+la_sua_eventuale_estensione", src)
 If l < 0 Then
   zip_close(zip)
   Error.Raise("Impossibile comprimere il file prescelto !")
 Endif
 
' Chiude la libreria:
 zip_close(zip)
 
End


Riferimenti