CDX E HBZIP

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

Moderador: Moderadores

MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

CDX E HBZIP

Mensagem por MARCELOG »

Olá Fórum,
ao escrever uma função para backup e restore, deparei-me com uma situação interessante.
Usando a hwgui, utilizei a função que retorna o nome do arquivo pesquisado/ selecionado, inclusive o diretório com base no windows.
Depois de solicitar confirmação do usuário para restauração, fechei todos os arquivos com dbcloseall() e, com FERASE(), pensei ter apagados os dbf´s e cdx´s.
Contudo, o procedimento retornou erro 2 (FERROR()), ou seja, os arquivos não foram encontrados.
Aí, verifiquei que o path atual não estava ativo, muito embora não o tivesse alterado.
Tudo bem, mandei apagar os arquivos no diretório atual que foi previamente salvo em varíavel.
Beleza, os arquivos de dados e índices foram apagados, sendo restaurado os dados do backup que não contempla os índices.
Mas aí, houve falha na reconstrução dos índices.
Através da POG (Programação Orientada a Gambiarra), optei por informar a situação ao usuario e sair do sistema.
Na nova entrada, os índices são normalmente reconstruídos.
O teste foi feito no Windows 98, e parece que vi alguma coisa sobre a manutenção dos índices na memória.
Como a minha rotina verifica a sua inexistência para criação, creio que o problema seja esse, FILE("?.CDX") sempre retorna .T. .
Tem solução o problema?
Como?

Desde já, obrigado.

MarceloG
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

A função file() não trabalha bem com curingas ela só dara o resultado cerot caso voce passe o nome completo do arquivo.

Talvez por isto voce esteja obtendo erros.

Para retornar resultados usando curingas voce reta de usar a função ADIR()

Ela retorna um array com os dados do diretorio.

Código: Selecionar todos

function MyFiles( oque )
    return iif( len( adir( oque ) ) > 0, .t., .f. ) 

...
? MyFiles( "*.CDX" )
...
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Rochinha,
obrigado pela costumeira atenção.
Mas descobri o problema.
A função da hwgui (SELECTFILE()) retorna o caminho da aplicação.
Todavia, se você procura e seleciona o arquivo num diretório ou drive diferente do atual a referencia ao mesmo (atual) se perde.
Experimente.

msginfo(cutdir()) //diretório atual
SELECTFILE(...) //selecione arquivo do drive a:
msginfo(curdir()) //Nulo

Já contornei o problema.

E obrigado novamente.

MarceloG
Responder