Mudei para zipmaster e estou usando uma função que achei em outro tópico. Porem o problema continua. Segue fonte.
function ZipFile(const DadosXML: AnsiString; const NomeArquivo: String): AnsiString;
var
Z : TZipMaster;
SSIn : TStringList;
sFile : string;
ssOut : TFileStream;
function EncodeBase64(Arquivo: TFileStream): String;
Var
Encoder64 : TIDEncoderMime;
lstFile: TStringList;
Begin
try
try
Encoder64 := TIDEncoderMime.Create (Nil);
lstFile := TStringList.Create;
lstFile.LoadFromStream(Arquivo);
Result := Encoder64.Encode(lstFile.Text);
finally
Encoder64.Free;
lstFile.Free;
end;
except on E: Exception do
//Nada
end;
end;
begin
try
Z := TZipMaster.Create(nil);
SSIn := TStringList.Create;
sFile := ApplicationPath + NomeArquivo;
SSIn.Text := DadosXML;
SSIn.SaveToFile(sFile);
//Ver se Precisa
Z.ZipFileName := Copy(sFile,1,Pos('.',sFile)-1) + '.zip';
Z.FSpecArgs.Clear;
Z.FSpecArgs.Add(sFile);
Z.Add;
ssOut := TFileStream.Create(Copy(sFile,1,Pos('.',sFile)-1) + '.zip',fmOpenRead);
Result := EncodeBase64(ssOut);
finally
Z.Free;
SSIn.Free;
end;
end;
Onde é usado:
function TEnviarBlocoX.GetXMLZipado: AnsiString;
var
AZip: AnsiString;
begin
if FXMLZipado = '' then
begin
if FXML <> '' then
begin
AZip := ZipFile(FXML, FPBodyElement+'.xml');
if AZip = '' then
raise Exception.Create('O seu compilador não tem suporte nativo a ZipFile.'+sLineBreak+
'Informe o XML já Zipado + Base64 em "XMLZipado"');
FXMLZipado := AZip;// EncodeBase64(AZip);
end;
end;
Result := FXMLZipado;
end;
Fico no aguardo de uma luz.