Fórum WInRar pelo Delphi #501521
17/11/2014
0
Usando o XP o Winrar avisa que não encontrou o arquivo,mas o código é o mesmo e a compilação também,mesmo compilando no XP não funciona.
Segue o comando,que usa ShellApi;
ShellExecute(0,nil,'Winrar.exe', Pchar ('e -ibck '+ExtractFilePath(Application.Exename)+'/resultados/D_quina.zip'+' '+ExtractFilePath(Application.Exename)+'/resultados/'),nil,sw_show);Alguem tem alguma ideia se o problema é nas aspas ou algo assim?
Vtrx
Curtir tópico
+ 0Post mais votado
19/11/2014
Primeiro:
Passe os caminhos com barra invertida e não barra normal (isso eu acho que o winrar interpreta, maaaas).
Ao invés de '/resultados/D_quina.zip'
Passe '\resultados\D_quina.zip'
Segundo:
O problema pode ser o caminho que está passando no quarto parâmetro do ShellExecute, que são os parâmetros para o WinRar.
Se tiver espaço no caminho ExtractFilePath(Application.Exename) o winrar não vai conseguir interpretar como um parâmetro único.
Exemplo:
- Se o caminho do seu exe for: c:\teste de winrar\projeto.exe
O winrar vai ser chamado assim: winrar e -ibck c:\teste de winrar\resultados\D_quina.zip c:\teste de winrar\resultados\
- No arquivo a ser extraído e caminho, deve passar com aspas para suprir o "problema" dos espaços e o winrar interpretar como parâmetros únicos, pois o delimitados de parâmetros é o espaço
Ficando assim: winrar e -ibck "c:\teste de winrar\resultados\D_quina.zip" "c:\teste de winrar\resultados\"
No seu projeto fica assim:
ShellExecute(
0,
nil,
'Winrar.exe',
Pchar('e -ibck "'+ExtractFilePath(Application.Exename)+'/resultados/D_quina.zip'+'" "'+ExtractFilePath(Application.Exename)+'/resultados/' + '"'),
Pchar('"C:\Program Files (x86)\WinRAR\"'), // caminho do executável
sw_show);
Renato Rubinho
Gostei + 1
Mais Posts
18/11/2014
Renato Rubinho
Tenta por o caminho do executável do winrar (se o winrar está retornando informação, não deve ser isso, mas quem sabe... rsrs)
Nos parâmetros, passa um espaço antes e um espaço depois. Já tive problemas por causa disso com ShellExecute.
ShellExecute(
0,
nil,
'Winrar.exe',
Pchar('<ESPAÇO>e -ibck '+ExtractFilePath(Application.Exename)+'/resultados/D_quina.zip'+' '+ExtractFilePath(Application.Exename)+'/resultados/<ESPAÇO>'),
Pchar('C:\Program Files (x86)\WinRAR\'), // caminho do executável
sw_show);
Abraççç,
Renato
Gostei + 0
18/11/2014
Vtrx
Como citei,no Windows 7 este trecho de código funciona normal mas no XP não,e descobri que é o tamanho do caminho do executável.
Se eu arrastar o executável para C:\,por exemplo,funciona mas eu fiz os teste no Desktop(C:\Documents and Settings\vtr\Desktop\Megax2\resultados) e aí da erro.
Me ajuda a achar uma solução...
Gostei + 0
19/11/2014
Renato Rubinho
Se for isso, minha sugestão inicial deveria funcionar, pois no quinto parâmetro do ShellExecute, passando o caminho do WinRar, ele irá processar o executável esteja onde estiver. Você testou isso ?
Gostei + 0
19/11/2014
Vtrx
Gostei + 0
19/11/2014
Vtrx
Desse jeito que passou funcionou,só falta eu dar boot no Win7 para ver se funciona tambem.
Apenas eliminei a parte que indica o caminho do winrar,pois assim acho que mesmo que não esteja no diretório padrão,vai rodar,o que você acha disto?
ShellExecute(
0,
nil,
'Winrar.exe',
Pchar('e -ibck "'+ExtractFilePath(Application.Exename)+'/resultados/D_quina.zip'+'" "'+ExtractFilePath(Application.Exename)+'/resultados/' + '"'),nil,sw_show);Será que você pode me ajudar em mais uma coisa?
Não sei como montar o comando para o winrar,no código acima,não mostrar a mensagem que pergunta se deseja substituir o arquivo tal pelo mais novo,assim eu poderia garantir que sempre teria o ultimo download baixado do arquivo.
Gostei + 0
19/11/2014
Vtrx
Muito obrigado
rrubinho.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)