Página 1 de 1
dúvida com comando !FILE
Enviado: 07 Out 2014 15:11
por porter
olá pessoal, o comando abaixo, dá certo no XP, mas no windows 7, 64 bits ele não funciona.
IF !FILE ("C:\LOJA\ARQUIVOS\CLIENTES.DBF")
Se querer verificar que o arquivo existe em uma pasta e uma subpasta, só executa corretamente se for no windows XP, no windows 7, ele só da certo assim:
Mesmo o arquivo existindo na pasta\subpasta, ele não encontra, se for executado no windows 7, 64 bits.
IF !FILE ("C:\LOJA\CLIENTES.DBF")
xHARBOUR
dúvida com comando !FILE
Enviado: 07 Out 2014 17:14
por Jairo Maia
Olá Porter,
Pressupondo que Seus SO XP e 7 estão em unidades diferentes, tente este teste:
1 - No Windows 7, se posicione na pasta: C:\LOJA\ARQUIVOS\CLIENTES.DBF;
2 - Digite: Attrib Clientes.dbf
Se o arquivo existir, o comando Attrib irá retornar o nome do arquivo e seus atributos. Se não existir, irá retornar: Arquivo não encontrado <NomeDoArquivo>
Faça esse teste e informe o fórum por favor.
dúvida com comando !FILE
Enviado: 07 Out 2014 17:30
por alxsts
Olá!
Além das sugestões do Jairo, teste também a nova função hb_FileExists().
dúvida com comando !FILE
Enviado: 07 Out 2014 17:32
por porter
tanto no XP como 7, com o comando Attrib foi encontrado o arquivo
CD\LOJA\ARQUIVOS
Attrib Clientes.dbf
A C:\LOJA\ARQUIVOS\CLIENTES.DBF
dúvida com comando !FILE
Enviado: 07 Out 2014 17:46
por porter
no lugar do !FILE, testei o hb_FileExists() ele tambem só funciona no XP, se tiver que pesquisar em duas pastas
dúvida com comando !FILE
Enviado: 07 Out 2014 17:53
por Jairo Maia
Porter,
Então o arquivo CLIENTES.DBF existe também na pasta: C:\LOJA\ARQUIVOS\. E creio que ele está com algum atributo de proteção. Como você não informou o resultado do Attrib, tente fazer o seguinte na pasta do Seven:
E teste novamente.
Com certeza você está usando xHarbour, e a função File() no xHarbour detecta o arquivo mesmo com atributos de proteção.
dúvida com comando !FILE
Enviado: 07 Out 2014 18:07
por porter
executei o Attrib -r -h -s clientes.dbf, não deu nenhuma mensagem, testei novamente o programa e não funcionou
dúvida com comando !FILE
Enviado: 07 Out 2014 18:21
por Jairo Maia
Porter, uso o Windows 7 64, e não há problemas com essa questão. Vou pedir 2 coisas:
1 - Coloque o fonte dessa função para que o fórum possa ajudar (não esquecça de usar o botão da tag Code);
2 - Informe se esse aplicativo você está compilando com xHarbour ou Harbour.
Isso faz diferença, porque a função que o colega Alexandre Santos (AlxSts) sugeriu é do Harbour.
Boa noite. Nos vemos amanhã... Abraços.
dúvida com comando !FILE
Enviado: 07 Out 2014 18:51
por porter
Olá,
Agora deu certo, executei novamente o Attrib -r -h -s clientes.dbf, acho que estava sim com algum atributo de proteção, executei o comando a primeira vez nao deu certo, mas agora deu.
obrigado Jairo, obrigado alxsts.
xHarbour
dúvida com comando !FILE
Enviado: 12 Nov 2021 19:20
por microvolution
boa noite!
desculpem ressuscitar um tópico tão antigo e tão simples o uso da função FILE().
Após uma formatação de uma máquina do laboratório aqui, reinstalei o windows 10, e começou exatamente o mesmo problema informado neste tópico.
Fiz os procedimentos sugeridos:
- o attrib e o nome do arquivo;
- o attrib -r -h -s teste.inf (arquivo teste.dbf com extensão modificada para esconder);
- testei com FILE (claro que já era assim), tanto quanto com HB_FileExists() e o problema não foi solucionado;
veja(m) meu código como é simples e funcionava antes da formatação (ré-instalação) do windows que estava dando pau:
Código: Selecionar todos
cDIR := 'c:\windows\system\'
cFileDBF := 'teste.inf'
if file (cDIR+cFileDBF)
DBUsearea(.T.,,cFileDBF,.T.)
if neterr()
MsgStop("não foi possível abrir o arquivo. Verifique e tente novamente mais tarde!",)
endif
else
MsgStop('Cópia ilegal - o programa não ser aberto',)
quit
endif
o IF FILE () não é executado e pula pro ELSE
O que pode ser?
grato!
obs.: 1) estou compilando com HMG 3.5.0.1 pela IDE, como sempre faço.
2) já testei também no lugar de usar as variáveis cDir + cFileDBF, usar diretamente dentro do IF FILE ('c:\windows\system\teste.inf') e também não executa ou não localiza o arquivo, que existe e não há atributo algum, nem de leitura e nem de oculto
dúvida com comando !FILE
Enviado: 12 Nov 2021 20:21
por JoséQuintas
Já falamos sobre usar pastas do Windows, que geralmente são protegidas pelo sistema operacional.
Em todo caso, veja se Directory() retorna alguma coisa.
dúvida com comando !FILE
Enviado: 12 Nov 2021 20:29
por Kapiaba
Boa noite;
Exemplo em fivewin muito simplezinho, veja se ajuda: Dúvidas, pergunte.
Download completo:
Regards, saludos.
dúvida com comando !FILE
Enviado: 12 Nov 2021 20:47
por Kapiaba
Imagem para você ver como foi o teste:
Regards, saludos.
dúvida com comando !FILE
Enviado: 13 Nov 2021 03:53
por Jairo Maia
Há alguns problemas ai...
1-A pasta System32 é protegida, e tanto para salvar algo nela como para ler, precisa de autorização de administrador.
2-Arquivos com extensão .inf são considerados arquivos de sistema, o Windows pode estar protegendo esse arquivo por considerar arquivo de sistema.
3-Se a versão do Windows é a mesma de antes da formatação, a configuração não é. A anterior estava configurado para NÃO proteger arquivos de sistema (o que é perigoso na minha opinião)
Sugestão de solução:
1-Altere a aplicação para esconder esse arquivo (que em se tratando de windows não se esconde nada, basta procurar por arquivos alterados na última hora por exemplo) em outra pasta que não exija operação de administrador para usar.
2-Mesmo alterando a extensão, nessa pasta vai continuar protegido, assim, o sistema a usá-lo tem que ser aberto no modo administrador para ler esse arquivo, salvo se o Windows considerá-lo como seu, a extensão .inf é reservada.
microvolution escreveu:o IF FILE () não é executado e pula pro ELSE
Errado, o If File() está sendo executado, porém, como não identifica o arquivo pula para o ELSE.
dúvida com comando !FILE
Enviado: 13 Nov 2021 09:12
por JoséQuintas
Se não me engano, da outra decidiu rodar o aplicativo como administrador.