Árvore de páginas

Compacta um ou vários arquivos em um único arquivo no formato Microsiga Zip (extensão .mzp).

Sintaxe

MsCompress( < xFile >, [ cDest ], [ cPass ], [ lChangeCase ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

xFile

qualquer

Indica o arquivo ou lista de arquivos que serão compactados. Os tipos de dados válidos para este parâmetro são: Caracter, para especificar um único arquivo, ou Array de caracteres, para especificar um ou mais arquivos.

X


cDest

caractere

Indica o caminho do arquivo de destino.



cPass

caractere

Indica a senha que será utilizada para criptografar o arquivo compactado.



lChangeCase

lógico

Indica se colocará o nome dos arquivos em letra minúscula.



Retorno

Nome

Tipo

Descrição

cRet

caractere

Em caso de sucesso, retorna uma string com o nome do arquivo gerado; caso contrário, retornará uma string em branco ("").

Observações

  • O formato MZP (Microsiga Zip) é proprietário e multiplataforma.
  • Se em cDest a extensão não for informada ou o nome não for informado, o padrão assumido será "*.mzp". Desta forma, o padrão será o mesmo nome do arquivo, do parâmetro xFile, ou o nome do 1º arquivo, do parâmetro <xFile>, com a extensão ".mzp".
  • Caso a senha seja informada na compactação, somente será possível descompactar o arquivo especificando a mesma senha para a função de descompactação.
  • A função trabalha com arquivos do ambiente (Environment) no Server (a partir do StartPath e/ou RootPath do ambiente) e com arquivos na estação remota, mas não com ambos ao mesmo tempo. Por exemplo, não é possível gerar um arquivo MZP dentro do RootPath do Server passando como parâmetro um ou mais arquivos de origem na estação remota, e vice-versa. Caso a aplicação tente fazer isso, a execução do programa será interrompida com uma ocorrência de erro fatal AdvPL "<b>Error in MSCOMPRESS(): MsCompress do not handle files in the server and client at same moment.</b>", e/ou "<b>Error in MSCOMPRESS(): MsCompress can only refer to files in the server.</b>", respectivamente.
  • Quando utilizamos a função MsCompress para gerar um arquivo MZP na estação remota, podemos especificar apenas um arquivo de origem para ser compactado. Caso seja especificado mais de um arquivo de origem neste cenário, a aplicação AdvPL é interrompida com a ocorrência de erro fatal AdvPL "<b>Error in MSCOMPRESS(): MsCompress Client do not handle multiple files</b>".
  • MSCompress não armazena no arquivo MZP o nome dos diretórios onde o(s) arquivo(s) se encontra(m). Portanto, caso sejam especificados múltiplos arquivos de origem, com mesmo nome, em pastas diferentes, a operação de descompactação salvará todos os arquivos na mesma pasta, onde os arquivos com mesmo nome serão sobrepostos.
  • Os caminhos de xFile e cDest serão convertidos para letra minúscula. A partir da build 7.00.121227A, os caminhos não serão convertidos para letra minúscula para Logix.
  • A partir da build 7.00.131227A foi criado o parâmetro lChangeCase, que se for definido com o valor .T., altera o nome dos arquivos e pastas para letra minúscula, e se for .F. não altera o nome informado. O valor padrão do parâmetro é .T..
  • Em ambiente Windows, os nomes de arquivos e pastas não possuem diferenciação entre maiúsculo e minúsculo, logo, a função conseguirá tratar os arquivos e pastas independente do valor definido no parâmetro lChangeCase. Em ambiente Linux ou Mac, os nomes dos arquivos e pastas respeitam a diferenciação.
  • Quando o SmartClient utilizado for uma build nativa Linux ou Mac, sabe-se que sistema de arquivos destas plataformas não têm unidade de disco, a nomenclatura dos arquivos é case sensitive (letras minúsculas diferente de maiúsculas), e as barras separadoras de diretório / pasta são barras normais "/" ao invés de barras inversas "\". Mesmo nestes casos, deve-se especificar uma letra de unidade de disco no diretório de destino; pois quando o SmartClient em Linux e/ou Mac receber o diretório de destino, com a unidade de disco especificada, a unidade de disco será ignorada e as barras serão internamente invertidas. Por exemplo, a cópia especificando o path de destino "C:\USER\LOCAL\TEMP\" será interpretado pelo SmartClient Linux e/ou Mac como "/user/local/temp/".


A função MSCOMPRESS tem um limite de trabalho de arquivos com até 2GB ( 2147483648 bytes). 


Exemplos

// 1º Exemplo: Compacta apenas um arquivo
cRet := MsCompress( "APXSRV.EXE", "APXSRV.MZP" )

// 2º Exemplo:Compacta um diretório com senha
aNome := {}
ADir( "*.DBF", aNome )
cRet := MsCompress( aNome, "ArqComp.MZP", "SENHA" )

Veja também

  • Sem rótulos