Página 1 de 1

Apagar matriz

Enviado: 02 Set 2014 10:04
por juniorcamilo
bom dia

amigos nao sou bom em matriz estou usando LF_DIRECTORY() da LIB LFNLIB (viewtopic.php?f=1&t=11069)

a funcao LErXML nao postada acho q nao precisa dela

Código: Selecionar todos

   Private cArqImp := LERINI("[LOCALNFE]")+"EMITIDAS\201408\NFE\*.XML"
   Private aDirectory := LF_DIRECTORY(cArqimp, "D")
   cArqImp := substr(cArqimp,1,Len(cArqimp)-5)
   For a = 1 to Len(aDirectory)
       if LerXml(aDirectory[a,6],cArqimp,'xMotivo') == "Autorizado o uso da NF-e"
          
       else
          apagar a matriz ?????????????????
       endif
   next   
Tags: ADel ASize AAdd ACopy AFill AIns

Apagar matriz

Enviado: 02 Set 2014 12:59
por alxsts
Olá!

Por favor, poderia ser mais claro?

Apagar matriz

Enviado: 02 Set 2014 13:15
por juniorcamilo
alxsts escreveu:Olá!

Por favor, poderia ser mais claro?
estou alimentando uma matriz(aDirectory) com os nomes dos XMLs de NFE emitidas pelo cliente. preciso saber quais dos XMLs foram autorizados! aqueles que não foram autorizados pela sefaz excluir do aDirectory.

Apagar matriz

Enviado: 02 Set 2014 13:36
por alxsts
Olá!

Por favor, faça o teste. Não compilei...

Código: Selecionar todos

Private cArqImp := LERINI("[LOCALNFE]")+"EMITIDAS\201408\NFE\*.XML"
 Private aDirectory := LF_DIRECTORY(cArqimp, "D")

LOCAL nLen
 cArqImp := substr(cArqimp,1,Len(cArqimp)-5)

 nLen := Len(aDirectory)
 For a = 1 to nLen
   if LerXml(aDirectory[a,6],cArqimp,'xMotivo') == "Autorizado o uso da NF-e"
     
   else
     // apagar a matriz ?????????????????
     If a < nLen
        ADel( aDirectory, a )
        ASize( aDirectory, --nLen )
     Endif
   endif
 next    

Apagar matriz

Enviado: 02 Set 2014 15:15
por juniorcamilo
Olá!

Por favor, faça o teste. Não compilei...
Valeu sua ajuda tava perdido justamente nos comando adel e asize

Código: Selecionar todos

   a := 1
   do while a <= Len(aDirectory)
       if LerXml(aDirectory[a,6],cArqimp,'xMotivo') == "Autorizado o uso da NF-e"
          &&Linhas de programacao
          a++
       else
          ADel( aDirectory, a )
          ASize( aDirectory, Len(aDirectory)-1 )
       endif
   enddo 

Apagar matriz

Enviado: 02 Set 2014 15:16
por juniorcamilo
opa esqueci de dizer obrigado alxsts

Apagar matriz

Enviado: 02 Set 2014 16:25
por alxsts
Olá!

Percebi que você trocou o For...Next por um Do...While...Enddo. Ficou bom.

Note que com o For...Next, você precisaria tratar o último elemento do array, como mostrei no exemplo que você postou.

Uma recomendação:
é sempre preferível montar o For...Next como coloquei no exemplo, armazenando o tamanho do array em uma variável antes e colocar esta variável como limite superior do For...Next, ao invés de chamar uma função, neste caso Len(), a cada iteração.