Descompactar Arquivos em Delphi com o caminho em um edit + nome do arquivo

Delphi

24/10/2012

Descompactar Arquivos em Delphi com o caminho em um edit + nome do arquivo

Boa tarde.
Gostaria de tirar uma dúvida.
Tenho o seguinte comando que realiza a descompactação de um arquivo.

WinExec(PChar(''C:\Arquivos de programas\WinRAR\WinRAR.exe a C:\Teste.rar C:\Teste.txt''),SW_Normal);

Gostaria de passar o caminho por edit e fazer com que ele assumisse o caminho por edit, já tentei isso
WinExec(PChar(Caminho_WinRar + ''a'' + Arq1Descompactar + NomeArq1Descompatado),SW_Normal);
mas não funciona.

Alguma dica?
Fábio Sela

Fábio Sela

Curtidas 0

Respostas

Alisson Santos

Alisson Santos

24/10/2012

Amigo voce ao invés de colocar todo código mostrando o caminho como vês, dentro do parênteses so colocar o nome do edil.
Assim quando ele for salvar ele verifica o caminho do edil.
GOSTEI 0
Jurandi Frade

Jurandi Frade

24/10/2012

1o: se Caminho_Winrar é uma variavel string, certifique-se de ter atribuido a ela o conteúdo de seu edit.
2o: verifique se os espaços necessários entre cada variavel estão sendo assinalados. No código abaixo isso não está acontecendo. Por exemplo ''a'' deveria ser '' a '' e entre o arquivo origem e arquivo destino tbm deve existir um espaço na instrução.
Resumindo o que está abaixo
WinExec(PChar(Caminho_WinRar + ''a'' + Arq1Descompactar + NomeArq1Descompatado),SW_Normal);
deveria ser
WinExec(PChar(Caminho_WinRar + '' a '' + Arq1Descompactar + '' '' + NomeArq1Descompatado),SW_Normal);

Sds,

GOSTEI 0
Claudia Nogueira

Claudia Nogueira

24/10/2012

Primeiro você tem que declarar uma variável do tipo pChar. Depois atribuir o valor e depois passar essa variável no WinExec.
Se for Delphi 7 ou inferior a variável é do tipo pChar, se for superior o tipo é pAnsiChar.

Var
  sComando : pChar;
begin
  sComando := pChar(EdtCaminhoWinRar.Text + ' a ' + EdtArquivoRar.Text + ' ' + EdtTxt.Text);
  WinExec(sComando,SW_Normal);;
end;
GOSTEI 0
Fábio Sela

Fábio Sela

24/10/2012

Bom dia.

Aparece uma mensagem de Erro:

Operacao Desconhecida ""

Ai no Winrar aparece a mensagem
! C:\Tasy\Versao2\expwheb.rar: Não foi possível abrir Versão
! O sistema não pode encontrar o arquivo especificado.
! C:\Tasy\Versao2\expwheb.rar: Não foi possível abrir 2.2.1173.rar
! O sistema não pode encontrar o arquivo especificado.
! C:\Tasy\Versao2\expwheb.rar: Não foi possível abrir C:\Tasy\Versao2\expwheb.dmp
! O sistema não pode encontrar o arquivo especificado.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

24/10/2012

Eu só tinha copiado e colado seu código e explicado a questão da variável, mas tem um erro de digitação mesmo.
Pra descompactar é x no lugar do a:

Var
sComando : pChar;
begin
sComando := pChar(EdtCaminhoWinRar.Text + ' X ' + EdtArquivoRar.Text + ' ' + EdtTxt.Text);
WinExec(sComando,SW_Normal);;
end;


E o EdtTxt.Text é pra ter o caminho onde será descompactado o arquivo.

Bom dia.

Aparece uma mensagem de Erro:

Operacao Desconhecida ""

Ai no Winrar aparece a mensagem
! C:\Tasy\Versao2\expwheb.rar: Não foi possível abrir Versão
! O sistema não pode encontrar o arquivo especificado.
! C:\Tasy\Versao2\expwheb.rar: Não foi possível abrir 2.2.1173.rar
! O sistema não pode encontrar o arquivo especificado.
! C:\Tasy\Versao2\expwheb.rar: Não foi possível abrir C:\Tasy\Versao2\expwheb.dmp
! O sistema não pode encontrar o arquivo especificado.
GOSTEI 0
Fábio Sela

Fábio Sela

24/10/2012

Mesmo erro.
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

24/10/2012

Qual o conteúdo dos txts? Antes de responder dessa última vez eu testei. Compactei um arquivo e depois testei com esse código e descompactou corretamente.

Mesmo erro.
GOSTEI 0
Fábio Sela

Fábio Sela

24/10/2012

o problema é que não é txt, é um arquivo dump (extensão de uso em banco de dados).

nome.dmp
GOSTEI 0
Claudia Nogueira

Claudia Nogueira

24/10/2012

Você não precisa passar o nome e a extensão do arquivo que será descompactado, mas sim somente a pasta que será descompactado. Exemplo:

Var
sComando : pChar;
begin
sComando := pChar(EdtCaminhoWinRar.Text + ' X ' + EdtArquivoRar.Text + ' C:\');
WinExec(sComando,SW_Normal);;
end;



o problema é que não é txt, é um arquivo dump (extensão de uso em banco de dados).

nome.dmp
GOSTEI 0
Francisco Costa

Francisco Costa

24/10/2012

Fiz o teste e assim não funciona e nem aparece erro:
Var
sComando : pAnsiChar;
begin
sComando := pAnsiChar(EdtCaminhoWinRar.Text + ' X ' + EdtArquivoRar.Text + EdtTxt.Text);
WinExec(sComando,SW_Normal);
end;

Mas assim funciona:
WinExec(pAnsiChar('C:\Arquivos de programas\WinRAR\WinRAR.exe e C:\ProCode.rar C:\'),SW_Normal)

o que eu fiz de errado?
GOSTEI 0
Fábio Sela

Fábio Sela

24/10/2012

Testei aqui e também não consegui achar o erro.
GOSTEI 0
POSTAR