Porque o EVAL({||}) e EVERY no "index on" não está

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Cezar
Usuário Nível 3
Usuário Nível 3
Mensagens: 189
Registrado em: 27 Mai 2006 14:03

Porque o EVAL({||}) e EVERY no "index on" não está

Mensagem por Cezar »

Boa tarde,

No clipper eu tinha esta rotina de indexação funcionado:

A função eval() executa a funçao Meter( aMeter ) para desenhar uma barra de progresso e seria executada em função do valor do comando EVERY.

Exemplo:
Total de Regs := ( LastRec() * 2 )
5000regs. no arquivo x 2 indices = 10000 regs. total
aMeter[3] := 1

INDEX ON CodMat TAG "I01" TO ( cInd ) EVAL {|| Meter( aMeter ) } EVERY aMeter[3]
INDEX ON DesMat TAG "I02" TO ( cInd ) EVAL {|| Meter( aMeter ) } EVERY aMeter[3]

Como o valor do EVERY = 1 , a função Meter( aMeter ) será executada 10000 !
Se o EVERY = 2 a função Meter( aMeter ) será executada 5000 !

No xHarbour isto não está funcionando, no caso o EVERY so executa a função Meter( aMeter ) 2 vezes. Sempre a qtde de indices.

Voces tem idéia do que acontece ??

Agradeço a dica.

cez_a@ubbi.com.br
Cezar
Usuário Nível 3
Usuário Nível 3
Mensagens: 189
Registrado em: 27 Mai 2006 14:03

Mensagem por Cezar »

ola,

Index On CodCli To Clientes Tag "I01" Eval {|| Meter( aMeter ) } Every aMeter[3]

O problema era, na função Meter( aMeter ), deveria ter um RETURN(.T.) e estava Nil.

Grato.
Responder