Jump to content

Promoção de Natal SAC Mensal

Contrate e ganhe 1 Kit agenda + Caneta
Saiba mais

LANÇAMENTO
Curso Completo - Dominando o ACBrMonitor

Conheça o Curso

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

rlind

Envio Bloco X Delphi 7

Recommended Posts

Boa tarde. Estou implementando em Delphi7 envio bloco x , sendo que o retorno eh sempre "arquivo zip inválido".

em anexo segue o trecho do fonte, onde por ser Delphi7 , estou zipando o XML com zipmaster e usando o metodo EncodeBase64

alguem pode me orientar o que estou fazendo de errado.

Muito Obrigado.

 

EnvioBlocox.txt

Share this post


Link to post
Share on other sites
11 minutos atrás, rlind disse:

Boa tarde. Estou implementando em Delphi7 envio bloco x , sendo que o retorno eh sempre "arquivo zip inválido".

em anexo segue o trecho do fonte, onde por ser Delphi7 , estou zipando o XML com zipmaster e usando o metodo EncodeBase64

alguem pode me orientar o que estou fazendo de errado.

Muito Obrigado.

 

EnvioBlocox.txt

Use o método do ACBr

olhe na pasta projetos tem uma aplicação assim lá tu pode olhar o código.


Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
http://www.juliomarmarchetti.com.br
Embarcadero MVP

Share this post


Link to post
Share on other sites

Certo Juliomar, seria na pasta Projetos em ACBrBlocoXSign ? com fonte em Lazarus ?

 

Obrigado.

Share this post


Link to post
Share on other sites
16 minutos atrás, rlind disse:

Certo Juliomar, seria na pasta Projetos em ACBrBlocoXSign ? com fonte em Lazarus ?

 

Obrigado.

Isso mesmo lazarus é pascal,  pode instalar ele ou abrir no bloco de notas e vai conseguir olhar


Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
http://www.juliomarmarchetti.com.br
Embarcadero MVP

Share this post


Link to post
Share on other sites

Bom dia. Apos verificar rotinas de envio no  ACBrMonitorPLUS e no ACBrBlocoXSign , ambos não informam "WebServices.enviarBlocoX.XMLZipado" , que eh exatamente onde esta ocorrendo o problema.

Se eu nao estivesse no Delphi 7 , somente passaria o conteudo do arquivo em "WebServices.enviarBlocoX.XML" e o componente ACBRBLOCOX gerava o zip e usava o EncodeBase64.

porem não eh o caso.

segue abaixo trecho do codigo fonte , se alguem puder me dar uma orientação, agradeço

 

       ZipMaster1.ZipFileName:= sNomearqXMLZIPADO ;
       ZipMaster1.FspecArgs.Clear;
       ZipMaster1.FspecArgs.Add(sNomearqXML);
       ZipMaster1.Add;

       WebServices.EnviarBlocoX.Clear;


       FXMLOriginal := TStringList.Create;
       try
          FXMLOriginal.LoadFromFile(sNomearqXML );
          WebServices.EnviarBlocoX.XML := FXMLOriginal.Text;
       finally
          FXMLOriginal.Free;
       end;

       stream := TMemoryStream.Create;
       stream.LoadFromFile(sNomearqXMLZIPADO);

       WebServices.enviarBlocoX.XMLZipado :=  EncodeBase64( ansistring( stream ) {sNomearqXMLZIPADO} );
       WebServices.EnviarBlocoX.Executar;

 

Obrigado.

 

 

Share this post


Link to post
Share on other sites

No caso do Delphi 7 o ACBr não está com a função de base64 pronta, para isso eu precisei utilizar a conversão feita pelo Indy e a DLL do 7-Zip e dai informar na propriedade do XMLZipado no ACBr, segue meu exemplo:
 

uses IdCoderMIME;


function Base64Encode(const ArquivoXML: String): String;
var
  Encoder: TIdEncoderMIME;
  FileStream: TMemoryStream;
begin
  Encoder := TIdEncoderMIME.Create(nil);
  FileStream := TMemoryStream.Create;
  FileStream.LoadFromFile(ArquivoXML);
  try
    Result := Encoder.Encode(FileStream);

  finally
    Encoder.Free;
  end;
end;

 

E alimentando a propriedade do ACBr, passando o caminho do Arquivo ZIP:

 

oBlocoX.WebServices.EnviarBlocoX.XMLZipado := Base64Encode('estoque.zip');

 

No meu caso, eu gero o arquivo .XML pelo ACBr e zipo ele utilizando a DLL do 7-Zip, você irá precisar da dll 7zip.dll na pasta do seu executável e um arquivo .pas "sevenzip.pas", caso precisar posso fornecer por email ou um link de download, não sei quanto as políticas do fórum para anexar ela aqui, mas é um componente livre:

 

var ArqZ: I7zOutArchive;

ArqZ := CreateOutArchive(CLSID_CFormatZip);
ArqZ.AddFile('estoque.xml', 'estoque.xml');
SetCompressionLevel(ArqZ, 5);
ArqZ.SaveToFile('estoque.zip');

 

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...