Zip/unzip ficheiros e pastas com estes comandos

Tradução automática de Deepl

Antes da troca de ficheiros (por e-mail, por exemplo), comprimimo-los frequentemente para reduzir o seu tamanho antes de os transmitir. Com 4D v18, pode comprimir e descomprimir os seus ficheiros através da programação sem necessidade de bibliotecas ou ferramentas externas. Aqui estão os novos comandos que lhe permitem fazê-lo:

Exemplo HDI

Comprimir ficheiros e pastas

O novo Zip Create archive permite criar um arquivo zip passando ou um ficheiro, uma pasta, ou um objecto com parâmetros(por exemplo, uma palavra-passe para ler o arquivo).

Comprimir um ficheiro:

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

Comprimir uma pasta:

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)

Comprimir com uma palavra-passe e uma barra de progresso:

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)

O método FormulaCompressing:

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

Descomprimir ficheiros e pastas

Um novo comando ZIP Read archive devolve um objecto de arquivo. Ao manipular este objecto, pode facilmente obter a lista de ficheiros dentro do arquivo, extrair um determinado ficheiro, ou extrair o arquivo inteiro, etc.

Leia o conteúdo do arquivo

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

Recuperar a lista de ficheiros e pastas

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

Ler o conteúdo de um ficheiro sem extracção

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

Extracto de ficheiro do arquivo

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

Extrair todos os ficheiros

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

Vanessa Talbot
• Proprietário do produto - Vanessa Talbot entrou ao time 4D Program em Junho de 2014 como Proprietária do Produto e está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Desde sua chegada, trabalhou na definição de funcionalidades chaves em 4D. Trabalhou na maioria das novas funcionalidades multithread preemptivo e também em um tema muito complexo: a nova arquitetura para a aplicação engined. Vanessa é formada pela Telecom Saint-Etienne. Começou sua carreira no Instituto de Investigação Criminal como desenvolvedora do departamento audiovisual. Também trabalhou em meios de comunicação e no âmbito médico como especialista em assistência técnica, produção e documentação de novas funcionalidades.