Histórico da Página
CONTEÚDO
Índice maxLevel 2
01. Visão geral
A api utp\ut-zip.p permite a criação de arquivos compactados (.zip).
02. Considerações
...
gerais
- Os procedimentos internos zipFiles e zipFilesEncrypt recebem como parâmetros os atributos e dados para criação do arquivo .zip desejado e é retornada uma temp-table com os possíveis erros.
- A include {utp/ut-zip.i} contém as definições das Temptemp-Table´s table´s que devem ser passadas como parâmetro para o procedimentos internos zipFiles e zipFilesEncrypt. Sendo que a chamada desta include, a inclusão de valores e a execução do utilitário em modo persistente, deve ser feito antes da chamada aos procedimentos internos zipFiles ou zipFilesEncrypt.
03. Implementação
Parâmetros
Variável | Tipo do parâmetro | Tipo do dado | Descrição |
---|---|---|---|
zipFileName | INPUT | CHARACTER | Endereço completo do arquivo .ZIP a ser gerado. Exemplo: c:\tmp\teste.zip |
tt-listFiles cFile lSearch | INPUT | TEMP-TABLE CHARACTER X(200) LOGICAL
| Tabela temporária que irá armazenar as informações referentes a cada um dos arquivos que deve ser inserido no arquivo .ZIP gerado. cFile: indica o nome do arquivo que deve ser inserido no ZIP gerado. lSearch: indica se o arquivo informado foi encontrado pelo utilitário. Valor padrão é false. |
password | INPUT | CHARACTER | Senha de acesso aos arquivos do .ZIP gerado. Este parâmetro é utilizado apenas na procedure interna zipFilesEncryp. |
lsobrescreve | INPUT | LOGICAL | Indica se o utilitário deve sobrescrever o arquivo ZIP caso ele já exista. |
tt-erros Cod-Erro Desc-Erro | OUTPUT | TEMP-TABLE INTEGER CHARACTER | Tabela temporária que irá armazenar os dados referentes aos erros encontrados na manipulação dos dados das tabelas de entrada. Cod-Erro: número do erro. |
Sequencial dentro da temp-table. Desc-Erro: descrição do erro. |
Informações | ||
---|---|---|
| ||
Após a chamada feita ao utilitário é imprescindível tratar os erros na temp-table tt-erros caso existam. |
...
Bloco de código | ||
---|---|---|
| ||
{utp/ut-zip.i}
def temp-table ttlista2 like tt-listfiles.
define variable arquivo as character no-undo.
define variable h-zip as handle no-undo.
run utp/ut-zip.p persistent set h-zip.
input from os-dir("c:\temp\ziptest").
repeat:
import arquivo.
if arquivo begins '.' then
next.
create ttlista2.
assign ttlista2.cfile = "c:\temp\ziptest\" + arquivo.
end.
input close.
for each tt-listfiles where tt-listfiles.cfile = '':
delete tt-listfiles.
end.
pause 0 before-hide.
for each ttlista2:
disp
ttlista2.cfile label 'arquivo' format 'x(50)'
with
side-label
frame flabel
size 70 by 3
view-as dialog-box.
process events.
create tt-listfiles.
buffer-copy ttlista2 to tt-listfiles.
run zipfiles in h-zip (input "c:\temp\teste02.zip",
input table tt-listfiles,
input true,
output table tt-erros).
delete tt-listfiles.
end.
for each tt-erros:
disp tt-erros.
end.
for each tt-erros:
disp tt-erros.
end.
delete procedure h-zip. |
04. Informações
...
adicionais
Caso ocorram erros relacionados com a passagem de grande número de arquivos a serem compactados no mesmo zip, conforme exemplos abaixo, recomenda-se passar um arquivo por vez para o mesmo arquivo zip. Utilizando este formato é possível realizar a compactação de dois mil arquivos no mesmo zip.
- Ocorrência de erro progress 11678 “REPLACE/CONCAT may not result in data > bytes. (11678)” quando esta temp-table recebe muitos arquivos.
- Limitação do sistema operacional com tamanho de instrução que limita em 8191 caracters caracteres a linha de comando no Windows XP ou mais recente.
...