Página 1 de 1

como usar ascan() com matriz bidirecional?

Enviado: 16 Mar 2008 00:51
por clodoaldomonteiro
Olá pessoal!

Tenho uma array, m365[0,4], que no decorrer do processamento vou adicionando elementos, mas só queria adicionar elementos se o promenro campo não existir, mais ou menos assim:

Código: Selecionar todos

sele pag
do while !eof()
   i=ascan(m365,pag_ed,,,)
   if i > 0           //se achou um elemento com o campo pag_ed 
      m365[i,2]+=Pag_valor //somo o valor ao campo 2 do elemento achado
   else
      aadd(m365,{pag_ed,pag_valor})   //adiciono um novo elemento
   endif
   skip
enddo
No manual do clipper só diz como fazer com vetores simples.

Desde já agradeço a atenção.

Enviado: 16 Mar 2008 11:37
por Toledo
Clodoaldo, neste caso sua rotina ficaria assim:

Código: Selecionar todos

sele pag
do while !eof()
   i=ascan(m365,{|e| e[1]==pag_ed })
   if i > 0           //se achou um elemento com o campo pag_ed
      m365[i,2]+=Pag_valor //somo o valor ao campo 2 do elemento achado
   else
      aadd(m365,{pag_ed,pag_valor})   //adiciono um novo elemento
   endif
   skip
enddo 
Obs.: e[1] é o valor do primeiro elemento da matriz, no exemplo acima corresponde ao valor de pag_ed.

Abraços,

Enviado: 16 Mar 2008 22:56
por clodoaldomonteiro
Toledo!
Valeu a dica, deu certinho, fico te devendo essa.