Zip/unzip di file e cartelle con questi comandi

Tradotto automaticamente da Deepl

Prima di scambiare file (ad esempio via e-mail), spesso li comprimiamo per ridurne le dimensioni prima di trasmetterli. Con 4D v18, è possibile comprimere e decomprimere i file tramite la programmazione, senza bisogno di librerie o strumenti esterni. Ecco i nuovi comandi che consentono di farlo:

Esempio HDI

Comprimere file e cartelle

Il nuovo comando Zip Create archive consente di creare un archivio zip passando un file, una cartella o un oggetto con dei parametri(ad esempio, una password per leggere l’archivio).

Comprimere un file:

C_OBJECT($file;$destination)
$destination :=Folder(fk desktop folder).file("MyDocs/file.zip")
$file :=Folder(fk desktop folder).file("MyDocs/testo.txt")
ZIP Create archive (
$file;$destination)

Comprimere una cartella:

C_OBJECT($folder;$destination)
$destination :=Folder(fk desktop folder).file("MyDocs/Images.zip")
$folder :=Folder(fk desktop folder).folder("MyDocs/Images")
ZIP Create archive ($folder;$destination)

Comprimere con una password e una barra di avanzamento:

C_OBJECT($zip)
$destination :=Folder(fk desktop folder).file("MyDocs/Archive.zip")
$zip :=New object
$zip .files:=Folder(fk desktop folder).folder("MyDocs/Resources").folders()
$zip .password:="password"
$zip .callback:=Formula(FormulaCompressing ($1))

progID :=Progress New
ZIP Create archive ($zip;$destination)
Progress QUIT (progID)

Il metodo FormulaCompressing:

Progress SET PROGRESS (progID;Num($1/100))

Decomprimere file e cartelle

Un nuovo ZIP Read archive restituisce un oggetto archivio. Manipolando questo oggetto, è possibile ottenere facilmente l’elenco dei file all’interno dell’archivio, estrarre un file particolare o l’intero archivio, ecc.

Leggere il contenuto dell’archivio

C_OBJECT($archive;$path)
$path :=Folder(fk desktop folder).file("MyDocs/Archive.zip")
$archive :=ZIP Read archive($path)

Recuperare l’elenco dei file e delle cartelle

$folders:=$archive.root.folders()
$files :=$archive.root.files()

Leggere il contenuto di un file senza estrazione

If ($files[$i].extension=".txt")
$txt :=$files[$i].getText()
Else
$blob :=$files[$i].getContent()
End if

Estrarre il file dall’archivio

$folderResult:=$files[$i].copyTo(Folder(fk desktop folder).folder("MyDocs"))

Estrarre tutti i file

$folderResult:=$archive.root.copyTo(Folder(fk desktop folder).folder("MyDocs"))

Vanessa Talbot
- Product Owner - Vanessa Talbot è entrata a far parte del team di 4D Program nel giugno 2014. In qualità di Product Owner, è incaricata di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente. Ha lavorato sulla maggior parte delle nuove funzionalità di multi-threading preemptive e anche su un argomento molto complesso: la nuova architettura per le applicazioni con motore. Vanessa si è laureata presso Telecom Saint-Etienne. Ha iniziato la sua carriera presso il Criminal Research Institute come sviluppatrice per il dipartimento audiovisivo. Ha lavorato anche nei settori dei media e della medicina come esperta di supporto tecnico, produzione e documentazione di nuove funzionalità.