Apagar matriz

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Apagar matriz

Mensagem 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
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Apagar matriz

Mensagem por alxsts »

Olá!

Por favor, poderia ser mais claro?
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Apagar matriz

Mensagem 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.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Apagar matriz

Mensagem 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    
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Apagar matriz

Mensagem 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 
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Apagar matriz

Mensagem por juniorcamilo »

opa esqueci de dizer obrigado alxsts
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Apagar matriz

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
Responder