Renanbg 1 Denunciar post Postado Setembro 22, 2010 Pessoal, alguem ja teve esse problema com a zlib no delphi 2010? Consigo compactar normalmente, mas ao descompactar os nomes dos arquivos que foram compactados mudam , assim como a extensão. No delphi 7 tava tudo ok. Será que devo atualizar a Zlib? Compartilhar este post Link para o post Compartilhar em outros sites
Raficcha 1 Denunciar post Postado Setembro 24, 2010 mas está mudando somente o nomes dos arquivos ou eles estão sendo corrompidos também (o conteúdo está sendo alterado)? Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Setembro 27, 2010 Eles mudam a extensão e nome. Chegam a ficar com caracteres chineses em alguns casos. exemplo: Compactei uma foto com o nome: foto.jpg e ao descompactar ficou como: foto Depois tentei compactar varias fotos e ao descompactar da esse erro: esta programado para descompactar em c:\backup\arquivos e olha o que o codigo tenta fazer. O nome do arquivo que deu erro era Desert.jpg. Segue o codigo que uso. No botão descompactar OpenDialog1.Execute; if (Trim(OpenDialog1.FileName) <> '') and (OpenDialog1.Files.Count > 0) then DecompressFiles(OpenDialog1.FileName,'C:\Backup\Arquivos\'); e a descompactação procedure TForm1.DecompressionProgress(Sender: TObject); begin Label2.Caption := CurrToStrF(((Sender as TDecompressionStream).Position * 100) / nMax,ffNumber,0); Application.ProcessMessages; end; // Rotina que Descompacta procedure TForm1.DecompressFiles(FileName, Destination: String); var InFile, OutFile: TFilestream; Decompr: TDecompressionStream; S: String; I,L,C: Integer; begin Destination := IncludeTrailingPathDelimiter(Destination); InFile := TFileStream.Create(FileName,fmOpenRead); try { Pega o número de arquivos } InFile.Read(C,SizeOf(C)); for I := 1 to C do begin Label1.Caption := 'Descomprimindo: '+IntToStr(I)+' de '+IntToStr(C); { Pega o nome do arquivo } InFile.Read(L,SizeOf(L)); SetLength(S,L); InFile.Read(S[1],L); { Lê o tamanho do arquivo } InFile.Read(L,SizeOf(L)); { Progresso do arquivo atual. Não se pode ler Decompr.Size, dá erro, por isso utilizamos L } nMax := L; { Descompacta e grava o arquivo no disco } S := Destination+S; // Adiciona o caminho do arquivo OutFile := TFileStream.Create(S,fmCreate or fmShareExclusive); //nesse ponto da o erro, mas apenas no delphi 2010 Decompr := TDecompressionStream.Create(InFile); Decompr.OnProgress := DecompressionProgress; try OutFile.CopyFrom(Decompr,L); finally OutFile.Free; Decompr.Free; end; end; Label1.Caption := ''; Label2.Caption := ''; finally InFile.Free; end; end; Agradeço qualquer dica. Compartilhar este post Link para o post Compartilhar em outros sites
Raficcha 1 Denunciar post Postado Outubro 4, 2010 Veja que ali você so passou a pasta do arquivo, precisa passar o nome do arquivo também. :D Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Outubro 4, 2010 Onde você diz? se for na tela de erro, ta certo...o sistema deve descompactar na pasta arquivos, mas por algum motivo no delphi 2010 ele não é capaz e da esse erro. Compartilhar este post Link para o post Compartilhar em outros sites
Raficcha 1 Denunciar post Postado Outubro 7, 2010 É que ele está dizendo que não possível criar o "arquivo"... a principio ele esta tentando criar um arquivo e não uma pasta. Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Outubro 8, 2010 Teoricamente sim. Ele precisa extrair os arquivos e pra isso cria-los. O ruim é que funciona até o delphi 2007 com certeza. No 2010 que ele da erro. muito estranho Compartilhar este post Link para o post Compartilhar em outros sites
GuiCorTei 0 Denunciar post Postado Fevereiro 7, 2011 eu preciso muito que o zLib funcione! eu estou usando o Delphi 2010, e não consigo fazer funcionar de jeito nenhum... estou usando o código do colega acima, e está dando esse erro: Cannot create file "C:\". O Sistema não pode encontrar o caminho especificado. e o delphi 2010 acusa essa linha: OutFile := TFileStream.Create(S,fmCreate or fmShareExclusive); eu não consegui instalar o ZipMaster, muito menos usa-lo, eu não sei mexer muito com isso e o único algoritmo bunitinho que achei (aqui nesse post) ta dando erro no Delphi 2010... alguem pode ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
viinilew 0 Denunciar post Postado Janeiro 9, 2013 eu preciso muito que o zLib funcione! eu estou usando o Delphi 2010, e não consigo fazer funcionar de jeito nenhum... estou usando o código do colega acima, e está dando esse erro: Cannot create file "C:\". O Sistema não pode encontrar o caminho especificado. e o delphi 2010 acusa essa linha: OutFile := TFileStream.Create(S,fmCreate or fmShareExclusive); eu não consegui instalar o ZipMaster, muito menos usa-lo, eu não sei mexer muito com isso e o único algoritmo bunitinho que achei (aqui nesse post) ta dando erro no Delphi 2010... alguem pode ajudar? Declara a variável do caminho como AnsiString. Compartilhar este post Link para o post Compartilhar em outros sites
Walison Chagas Magalhães 0 Denunciar post Postado Fevereiro 14, 2014 Estou com o mesmo erro, ainda que eu declare como AnsiString! Inicialmente o erro já ocorre na leitura do primeiro nome de arquivo, onde: SetLength(S,L); //O length é o certo, no entando o valor que vai pra "S" está errado logo após executa: InFile.Read(S[1],L); //ai parece estar pegando do lugar certo no entando faltando a extenção, //no entanto ele sobrepõem oq estáva armazenado em "S" //Ex: S = 'uNomeArquivos.pa'(pegou nome errado) e substitui errado tmb pelo //nome certo (nome certo = 'projeto1'), substituição S = 'projeto1uivos.pa' Compartilhar este post Link para o post Compartilhar em outros sites