Fórum Compactando aquivos #459663
28/10/2013
0
Bom dia pessoa, utilizo bastante a compactação de arquivo no delphi para enviar vários xml's para contabilidade, porém, ele sempre compacta a pasta e não somente os arquivos contido na pasta, exemplo, os arquivos estão localizados em c:\temp, dentro do arquivo rar vai tar a pasta temp, e não somente os arquivos. Comando qeu utilizo abaixo :
este wvPathTemp é onde tem uma cópia dos arquivos xml's.
WinExec( PAnsiChar(AnsiString( wvcompactador + '\winrar.exe a ' + wvsyspath_local + anexo + ' ' + wvPathTemp + '\')), SW_HIDE);
este wvPathTemp é onde tem uma cópia dos arquivos xml's.
Ricardo Rodrigues
Curtir tópico
+ 0
Responder
Posts
28/10/2013
Itamar Souza
Bom dia pessoa, utilizo bastante a compactação de arquivo no delphi para enviar vários xml's para contabilidade, porém, ele sempre compacta a pasta e não somente os arquivos contido na pasta, exemplo, os arquivos estão localizados em c:\temp, dentro do arquivo rar vai tar a pasta temp, e não somente os arquivos. Comando qeu utilizo abaixo :
este wvPathTemp é onde tem uma cópia dos arquivos xml's.
WinExec( PAnsiChar(AnsiString( wvcompactador + '\winrar.exe a ' + wvsyspath_local + anexo + ' ' + wvPathTemp + '\')), SW_HIDE);
este wvPathTemp é onde tem uma cópia dos arquivos xml's.
Amigo..
Hoje eu to com tempo... então veja isso;...
Espero ter ajudado
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
CompactarArquivo(ArquivoDestino, LocalCompactar: string);
end;
procedure TForm1.CompactarArquivo(ArquivoDestino, LocalCompactar: string);
var
proc_info: TProcessInformation;
startinfo: TStartupInfo;
ExitCode: LongWord;
winrar: string;
begin
// Rotina de compactação que adiciona arquivo a um rar, executando o winrar em segundo plano
if FileExists('C:\Program Files\WinRAR\WINRAR.EXE') then
begin
// Verifica se tem o winrar local
winrar := 'C:\Program Files\WinRAR\WINRAR.EXE';
end
else
begin
// Utiliza o winrar do servidor
winrar := '\\caminho\Winrar\WINRAR.EXE';
end;
FillChar(proc_info, sizeof(TProcessInformation), 0);
FillChar(startinfo, sizeof(TStartupInfo), 0);
startinfo.cb := sizeof(TStartupInfo);
startinfo.wShowWindow := SW_HIDE;
if (CreateProcess(nil, PChar(winrar + ' a -inul -ibck ' + ArquivoDestino + ' ' + LocalCompactar),
nil, nil, False, REALTIME_PRIORITY_CLASS, nil, nil, startinfo, proc_info)) then
begin // Cria processo de compactação
WaitForSingleObject(proc_info.hProcess, INFINITE);
// Aguarda a finalização do thread do processo para continuar
GetExitCodeProcess(proc_info.hProcess, ExitCode);
CloseHandle(proc_info.hThread);
CloseHandle(proc_info.hProcess);
end;
end;
Responder
Gostei + 0
30/10/2013
Ricardo Rodrigues
Pode fechar o tópico, ja descobri como faz, basta colocar "winrar a -ep", compacta somente o conteúdo do diretório.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)