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.
Riga 45: | Riga 45: | ||
<FONT Color=gray>' ''Inserisce il file, definendone il nome e la sua eventuale estensione, 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=darkorange>''il_'''solo'''_nome_del_file_da_comprimere+la_sua_eventuale_estensione''</font>", src) | + | l = zip_add(zip, "<FONT Color=darkorange>''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) |
Versione attuale delle 06:07, 27 ago 2024
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.5 ".
Vediamo di seguito un esempio pratico debitamente commentato:
Library "libzip:5.5" 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