dúvida com comando !FILE

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

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

dúvida com comando !FILE

Mensagem 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
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

dúvida com comando !FILE

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

dúvida com comando !FILE

Mensagem por alxsts »

Olá!

Além das sugestões do Jairo, teste também a nova função hb_FileExists().
[]´s
Alexandre Santos (AlxSts)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

dúvida com comando !FILE

Mensagem 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
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

dúvida com comando !FILE

Mensagem por porter »

no lugar do !FILE, testei o hb_FileExists() ele tambem só funciona no XP, se tiver que pesquisar em duas pastas
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

dúvida com comando !FILE

Mensagem 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:

Código: Selecionar todos

Attrib -r -h -s Clientes.dbf
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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

dúvida com comando !FILE

Mensagem por porter »

executei o Attrib -r -h -s clientes.dbf, não deu nenhuma mensagem, testei novamente o programa e não funcionou
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

dúvida com comando !FILE

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

dúvida com comando !FILE

Mensagem 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
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

dúvida com comando !FILE

Mensagem 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
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

dúvida com comando !FILE

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

dúvida com comando !FILE

Mensagem por Kapiaba »

Boa noite;

Exemplo em fivewin muito simplezinho, veja se ajuda: Dúvidas, pergunte.

Download completo:
MICROEVO.rar
(1.14 MiB) Baixado 189 vezes
Regards, saludos.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

dúvida com comando !FILE

Mensagem por Kapiaba »

Imagem para você ver como foi o teste:
MICROEVO.png
Regards, saludos.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

dúvida com comando !FILE

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

dúvida com comando !FILE

Mensagem por JoséQuintas »

Se não me engano, da outra decidiu rodar o aplicativo como administrador.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder