Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Variável

Tipo do parâmetroTipo do dado

Descrição

zipFileNameINPUTCHARACTER

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.

passwordINPUTCHARACTER

Senha de acesso aos arquivos do .ZIP gerado.

Este parâmetro é utilizado apenas na procedure interna zipFilesEncryp.

lsobrescreve INPUTLOGICALIndica 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. Seqüencial dentro da temp-table.

Desc-Erro: descrição do erro.

Informações
titleImportante

Após a chamada feita ao utilitário é imprescindível tratar os erros nesta temp-table caso existam.


Exemplo Padrão:

Bloco de código
themeRDark
{utp/ut-zip.i}

define variable h-zip as handle     no-undo.

run utp/ut-zip.p persistent set h-zip.

create tt-listfiles.
assign tt-listfiles.cfile = "c:\temp\teste01.txt".
create tt-listfiles.
assign tt-listfiles.cfile = "c:\temp\teste02.txt".
run zipfiles        in h-zip (input "c:\temp\teste01.zip",
                              input table tt-listfiles,
                              input true,
                              output table tt-erros).

for each tt-erros:
    disp tt-erros.
end.
run zipfilesencrypt in h-zip (input "c:\temp\teste02.zip",
                              input table tt-listfiles,
                              input "senha",
                              input false,
                              output table tt-erros).

for each tt-erros:
    disp tt-erros.
end.

delete procedure h-zip.


Exemplo 2adaptado para grande volume de arquivos:

Bloco de código
themeRDark
{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.

  1. Ocorrência de erro progress 11678 “REPLACE/CONCAT may not result in data >  bytes. (11678)” quando esta temp-table recebe muitos arquivos.
  2. Limitação do sistema operacional com tamanho de instrução que limita em 8191 caracters a linha de comando no Windows XP ou mais recente.