quando o volume te registros é muito alta
Diga o que chama de alta.
acrescente OSLIB.LIB e coloque nas primeiras linhas do aplicativo OL_AutoYield(.T.)
Não tenho mais OSLIB.
Isso é para o programa não ocupar 100% de CPU, e deixar o Windows trabalhar.
Não é obrigatório mas pode ser interessante colocar em pontos de parada.
Por exemplo, dentro do loop da GETSYS.
Isso libera tempo ao máximo. Seu aplicativo vai ocupar ZERO de CPU quando estiver em espera.
Caso contrário 100%, ou menos se já estiver com OL_AutoYield(.T.).
OL_AutoYield(.T.) ativa o modo automático
OL_Yield() libera a cada chamada
Explicação:
Para o Clipper verificar teclado (ou mouse se tiver LIB de mouse), ele fica testando o teclado milhares de vezes por segundo.
É isso que causa o uso de 100% de CPU.
Para a gente está parado, mas na prática ele está trabalhando e muito.
Programa em Windows normalmente já considera isso, e tem algo parecido.
Sobre CDX:
Talvez eu tenha me confundindo quanto a linqueditar DBFCDX.
Acho que era a SIXCDX que tinha opção pra retirar DBFCDX.
Talvez possa ser seu próximo teste: SIXCDX.
Seria trocar DBFCDX pra SIXCDX, e acrescentar a LIB.
Aí fica com o mesmo ambiente que eu sempre usei, restando apenas o detalhe o campo MEMO.
EU jÁ TIVE PROBLEMA COM CAMPO MEMO.
Código: Selecionar todos
USE PEDIDOS
INDEX ON CODIGO TO INDICE1
SEEK 5
*** internal error ***
Só porque o campo memo existia.
Acho que já era SIXCDX nessa época.
Não lembro a mensagem exata.
Era volume maior de dados, e muitos usuários, mais de 50.
E nesse mesmo local, na época do W98, ao conectar máquina com W2000, a máquina com W2000 corrompia índices.