Amiguinhos,
E vcs, o q seus programas fazem para descobrir um indice corrompido e evitar que usuários continuem incluindo, alterando e excluindo dados num DBF/CDX ?
Reindexar. Não tem outro jeito. Não existe meios de recuperar um índice corrompido, tendo em vista que o mesmo é
descartável.
Para teste de integridade da tabela .DBF voce pode usar a função contida em
Função para teste de integridade de .DBF( Uso Geral )Caso deseje trabalhar com vetor e simular SQL gerando um arquivo temporário sem muito trabalho, veja o tópico
Super seleção de dados com ordenação dos registros.
Usar readonly não vai resolver o problema de corrupção dos dados vistos que o mesmo só acontece devido a realocação de memória ocorrida no cache do S.O. enquanto os aplicativos estão abertos.
Uma melhoria no cache geralmente se consegue quando modificamos o método de controle fazendo com que o cache não demore para liberar seu conteúdo quando um aplicativo abandonou seu uso pelo fechamento das tabelas, algo com fechamento atrasado.
A corrupção das tabelas geralmente ocorrem porque enquanto se usa a tabela, o cache esta sendo manuseado por aplicativos que fazem muita escrita no cache e o vilão é o Internet Explorer e o que ocorre é que muito lixo proveniente de páginas é salvo junto ou no meio dos dados, reescrevendo a tabela e sumindo com registros.
Deseja para de ter problemas?
Use um servidor de dados dedicado, onde o mesmo somente tenha os dados acessados e que não seja usada para nada.
Use NetIO ou LetoDB, com eles o servidor executará o módulo server, receberá comandos e retornará o resultado para seus aplicativos em rede de forma mais tranquila.
Se o seu aplicativo ficar em um servidor, qualquer besteira que seus usuários façam no terminal não trará danos diretos ao seus dados.