Bom dia,
Estou com um problema para ler arquivos XML com a função ACBrSAT1.CFe.LoadFromFile, fiz uma estrutura para selecionar múltiplos arquivos XML e um laço que passa pelos itens e quando finaliza, volta para o início e pula para o próximo arquivo XML. O que acontece atualmente quando executo o código.
Ex: Seleciono 3 XML's, a estrutura lê todos os itens do primeiro, mas não passa para o próximo arquivo, faz o mesmo processo 3x (Número do count de arquivos selecionados).
Código:
if (OpenDialog1.Execute) then
begin
SOMA5405 := 0.0;
SOMA5102 := 0.0;
SOMA5101 := 0.0;
while a <= OpenDialog1.Files.Count do
begin
v := 0;
i := 0;
ACBrSAT1.CFe.LoadFromFile(OpenDialog1.FileName);
ShowMessage('quant itens ' + IntToStr(ACBrSAT1.CFe.Det.Count) );
while i < ACBrSAT1.CFe.Det.Count do
begin
edtN_CFE.Text := IntToStr(ACBrSAT1.CFe.ide.nCFe);
edt_CLIENTE.Text := ACBrSAT1.CFE.Emit.xNome;
//edtN_ITEM.Text := IntToStr(ACBrSAT1.CFe.DeT.Items[v].nItem);
//edtNOME_PROD.Text := ACBrSAT1.CFe.Det.Items[v].Prod.xProd;
//edtCFOP.Text := ACBrSAT1.CFE.Det.Items[v].Prod.CFOP;
//edtV_ITEM.Text := FloatToStr(ACBrSAT1.CFe.Det.Items[v].Prod.vItem);
if Pos(CFOP5405, ACBrSAT1.CFe.Det.Items.Prod.CFOP)<> 0 then
begin
SOMA5405 := SOMA5405 + ACBrSAT1.CFe.Det.Items.Prod.vItem;
end;
if Pos(CFOP5102, ACBrSAT1.CFe.Det.Items.Prod.CFOP)<> 0 then
begin
SOMA5102 := SOMA5102 + ACBrSAT1.CFe.Det.Items.Prod.vItem;
end;
if Pos(CFOP5101, ACBrSAT1.CFe.Det.Items.Prod.CFOP)<> 0 then
begin
SOMA5101 := SOMA5101 + ACBrSAT1.CFe.Det.Items.Prod.vItem;
end;
i := i+1;
end;
edt_SOMA5405.text := FloatToStr(SOMA5405);
edt_SOMA5102.text := FloatToStr(SOMA5102);
edt_SOMA5101.text := FloatToStr(SOMA5101);
SOMATOTAL := (SOMA5405) + (SOMA5102) + (SOMA5101);
edt_SOMATOTAL.text := FloatToStr(SOMATOTAL);
a := a+1;
end;
end;
end;