Fórum Compactar com winzip #288502
18/07/2005
0
WinExec(PChar(´C:\\\\\\\\Arquivos de Programas\\\\\\\\WinZip\\\\\\\\WinZip32 -a -r -ex ´´
+DirDestino+´´ ´+´´´+Origem+´´´),1);
Ela compactas os arquivos pelo winzip. No windows XP funciona tanquilo, já no 98 naum esta funcionando e tambem naum da nenhum erro.
Alçguem poderia me ajudar neste misterio????
obrigado
Diegocrosa
Curtir tópico
+ 0Posts
18/07/2005
Daemon
Gostei + 0
18/07/2005
Daemon
Gostei + 0
18/07/2005
Eniorm
[b:90974d0389]winzip32.exe[/b:90974d0389]
Isso funciona certamente pq o path do winzip está registrado no sistema do pc. Vc pode testar isso no Iniciar/Executar e digitar: ´winzip32.exe´ e confirmar que o winzip é aberto.
Gostei + 0
19/07/2005
Diegocrosa
Oi,
Obrigado por ter respondido.
Mas como fica o codigo com o ShellExecute. è que eu nunca usei esse e ele esta dando erro de parametros.
Desdeja agradeço.
Gostei + 0
19/07/2005
Daemon
ShellExecute(Application.Handle,[i:b5777d90e9]METODO[/i:b5777d90e9], [i:b5777d90e9]EXECUTAVEL[/i:b5777d90e9], [i:b5777d90e9]PARAMETROS [/i:b5777d90e9], [i:b5777d90e9]CAMINHO[/i:b5777d90e9], sw_Maximize);
em ´Parametros´ se não tiver nenhum, passe ´NIL´......então, no caso do winzip:
ShellExecute(Application.Handle,´OPEN´, ´winzip32.exe´,nil, PChar(ExtractFilePath(´winzip32.exe´)),sw_Maximize);
..veja se assim vc consegue. ...se não conseguir, me dá um toque...
Gostei + 0
19/07/2005
Daemon
..flws
Gostei + 0
19/07/2005
Diegocrosa
Poderia dar um exemplo referente ao codigo que passei no forum ?
Para executar o winzip com os parametros, destino e origem.
Valeu!!!
Gostei + 0
19/07/2005
Daemon
ShellExecute(Application.Handle,´OPEN´, ´winzip32.exe´,´-a -r -ex "´+DirDestino+´" ´+´"´+Origem+´"´, PChar(ExtractFilePath(´winzip32.exe´)),sw_Maximize);
Gostei + 0
20/07/2005
Diegocrosa
ShellExecute(Application.Handle,´OPEN´, ´winzip32.exe´,´-a -r -ex "´+DirDestino+´" ´+´"´+Origem+´"´, PChar(ExtractFilePath(´winzip32.exe´)),sw_Maximize);
Coloquei o codigo acima na minha aplicação e gerou o erro:
[Error] BackupZip.pas(167): Incompatible types: ´String´ and ´PAnsiChar´
e o ponteiro fica piscando no Pchar.
As duas variaveis sao do tipo string.
ja as convertit pra Pchar e naum funcionou.
poderia me dar mais essa ajudinha?
Obrigado
Gostei + 0
20/07/2005
Diegocrosa
ShellExecute(Application.Handle,´OPEN´, ´winzip32.exe´,´-a -r -ex "´+DirDestino+´" ´+´"´+Origem+´"´, PChar(ExtractFilePath(´winzip32.exe´)),sw_Maximize);
Oi
fiz a seguite mudança:
ShellExecute(Application.Handle,´OPEN´, ´winzip32.exe´,Pchar(´-a -r -ex ´´+Destino+´´ ´+´´´+Origem+´´´), PChar(pbCaminho_zip),sw_Maximize);
Copilou corretamente. Ele chama o Winzip e quando eu dou Igree e o winzip gera o seguinte erro:
Invalid fileid c:\ f:\download\copia\Fat.zip
Sendo que o que eu quero compactar esta na Origem.
Obrigado
Gostei + 0
21/07/2005
Marcio.theis
ShellExecute(Application.Handle,´OPEN´, ´winzip32.exe´,PChar(´-min -a -ex "´ + Destino + ´" ´ + ´"´ + Origem + ´"´), PChar(ExtractFilePath(´winzip32.exe´)),sw_Maximize);
no caso o -min serve para que o winzip não abra a tela, vai rodar de forma minimizada.... e removi o -r, pois ele manda zipar a pasta inteira que selecionar o diretório....
Gostei + 0
21/07/2005
Daemon
ex:
winzip -min -a -ex f:\download\copia\Fat.zip c:\autoexec.bat
e funcionou corretamente??
Gostei + 0
21/07/2005
Diegocrosa
ShellExecute(Application.Handle,´OPEN´, ´winzip32.exe´,PChar(´-min -a -ex "´ + Destino + ´" ´ + ´"´ + Origem + ´"´), PChar(ExtractFilePath(´winzip32.exe´)),sw_Maximize);
no caso o -min serve para que o winzip não abra a tela, vai rodar de forma minimizada.... e removi o -r, pois ele manda zipar a pasta inteira que selecionar o diretório....[/quote:79f4105e03]
Procedure TFrmCopiaZip.Copia;
Var
Cont,x,Aux,Erro : integer;
NomeArq,tipo,Comando,DirDestino,Destino,Origem,Alias,Caminho : String;
POrigem,PDestino,PArquivo : Array[0..1000] of char;
Data:String;
Begin
Cont := 0;
Screen.Cursor := crHourGlass;
DirDestino := DirList.Directory; // Ja com "\" se for unidade disquete
pbCaminho_zip := ExtractShortPathName(pbCaminho_zip);
Inc(Cont);
// Pega cada um dos Alias
For Aux := 0 to CheckListBox1.Items.count-1 do
Begin
If CheckListBox1.Checked[Aux] = False then
Continue;
Alias := UpperCase(CheckListBox1.Items.Strings[Aux]);
If not Session.IsAlias(Alias) then
Begin
MessageDlg(´Alias não encontrado: ´+Alias,mtInformation,[mbOk],0);
Continue;
End;
Caminho := FrmFuncoes.RetornaAlias(Alias); //C:\sistema\fat\db
Caminho := ExtractShortPathName(caminho);
If DirectoryExists(Caminho) then
Origem := Caminho
else
Continue;
// Avisa que vai substituir
Destino:= ´ ´+DirDestino +´\´+Alias +´.zip´;
If FileExists(Trim(Destino)) then
Begin
MessageDlg(´Arquivo de backup existente. Ele será atualizado.´,mtInformation,[mbOK],0);
End;
ShellExecute(Application.Handle,´OPEN´, ´winzip32.exe´,PChar(´-min -a -ex "´ + Destino + ´" ´ + ´"´ + Origem + ´"´), PChar(ExtractFilePath(´winzip32.exe´)),sw_Maximize);
{
WinExec(PChar(´C:\Arquivos de Programas\WinZip\WinZip32 -a -r -ex "´
+DirDestino+´\´+Alias+´" ´+´"´+Origem+´"´),1);
ShowMessage(´Arquivo "´+UpperCase(Alias)+´.ZIP" criado na pasta "´+
UpperCase(DirDestino)+´"´);
}
End;
Screen.Cursor := crDefault;
GravaDataBackup;
MessageDlg(´Fim do Backup com sucesso.´,mtInformation,[mbOk],0);
End;
Este e o codigo , conforme vc pediu para alterar.
Sendo que a variavel destino eu concateno conforme o usuario escole o ditetorio pra salvar a copia.
A ogirem e concatenada conforma o sistema que ele escole pra fazer a copia.
Mas o winzip continua dando esse erro Invalid fileid c:\ f:\download\copia\Fat.zip
Testei pelo dos e deu certo. acho que o problema esta na forma de concatenar as variaveis.
O codigo que esta em comentario esta funcionando, mas quando e Win98 ele não executa o winzip.
Se precisar ser mais claro me avise.
Valeu pela ajuda.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)