Página 1 de 1
Mudar atributos de um arquivo
Enviado: 18 Abr 2009 09:46
por clodoaldomonteiro
Olá galera!
Queria saber se no harbour tem alguma função para mudar os atributos de arquivo, aqueles R S H, pois com o attrib do DOS sempre aparece uma tela preta.
Re: Mudar atributos de um arquivo
Enviado: 18 Abr 2009 10:08
por Maligno
Função SetFAttr(<arquivo>,<atributo>), com os códitos de atributo iguais aos da função FCreate() do Clipper, onde são acrescentados apenas o 8 para "volume" e o 32 pra "archived". Os códigos podem ser combinados, claro.
Mudar atributos de um arquivo
Enviado: 25 Nov 2016 10:15
por spereira
Bom dia,
O meu arquivo está com os atributos +R+H+S.
Durante o processo tenho que o passar para -R-H-S para que possa ser visualizado e trabalhado e, depois tenho passá-lo novamente para +R+H+S, uma vez que há outros programas antigos que o utilizam desta forma.
O fato é que com a função SetFAttr( "PONTO.DBF", "-R-H-S" ) ele funciona corretamente, mas quando executo a função para retornar como estava antes não funciona, e faço desta forma SetFAttr( "PONTO.DBF", "+R+H+S" ).
Há alguma outra forma de fazê-lo?
Obrigado.
Mudar atributos de um arquivo
Enviado: 25 Nov 2016 10:20
por Jairo Maia
Olá Sérgio,
Já tentou sem o atributo "H" (hiden)? Acho que terá o mesmo efeito e será achado para voltar os atributos.
Mudar atributos de um arquivo
Enviado: 25 Nov 2016 10:59
por spereira
Já tentei agora sem o H mas sem sucesso, também tentei SetFAttr( "PONTO.DBF", "RHS" ) e SetFAttr( "PONTO.DBF", 124 ) também sem sucesso.
Descobri uma forma de fazer, que serve para o que eu preciso que é imprimir uma lista de ponto apenas, que é utilizar o COPY FILE deste arquivo para outro temporário e este arquivo é criado sem estes atributos e assim posso trabalhar. Mas para outra aplicação que eu precisar manipular os dados não sei como fazer.
Obrigado.
Mudar atributos de um arquivo
Enviado: 25 Nov 2016 11:29
por lugab
Bom dia, pessoal.
Peço licença pra pegar carona nesse post e esclarecer o que segue:
Eu uso Hb20+Bcc e gostaria de tornar um executável "ReaOnly" e depois Desfazer o Atributro
Tentei isso e não deu erro de compilação, porém não aconteceu nada com o executavel:
//Para Desfazer: SetFAttr( "PROG.EXE", "-R" )
O que devo faxzer ?
Mudar atributos de um arquivo
Enviado: 25 Nov 2016 11:38
por Jairo Maia
Olá Sérgio Pereira,
Uma pergunta que pode ser idiota, mas você tem certeza que está fechando o arquivo antes de voltar os atributos?
Olá lugab,
Você está tentando fazer isso pelo próprio executável? Lembre-se que para alterar atributos o arquivo não pode estar em uso, ou seja, tem que estar fechado.
Mudar atributos de um arquivo
Enviado: 25 Nov 2016 12:17
por spereira
Olá Jairo,
Sim, fechei a área do arquivo, aliás eu tinha esta dúvida e testei com close all e o resultado foi o mesmo.
Acredito que tenha algum bug nesta função do harbour.
Obrigado.
Mudar atributos de um arquivo
Enviado: 25 Nov 2016 13:24
por lugab
Sim, Jairo, o programa em execução é TESTE.EXE e o que eu quero mudar atributos é PROG.EXE
lugab, você está tentando fazer isso pelo próprio executável? Lembre-se que para alterar atributos o arquivo não pode estar em uso, ou seja, tem que estar fechado.
Mudar atributos de um arquivo
Enviado: 26 Nov 2016 11:37
por Jairo Maia
Olá Pessoal,
Realmente a função
SetFAttr() não funciona, trata-se realmente de um bug dessa função que é da lib
HbCT.Lib, não é do Harbour. Mas a função
Hb_FSetAttr() funciona perfeitamente, e a forma de passar os parâmetros é a mesma da SetFAttr():
Código: Selecionar todos
Function Main()
Clear Screen
?
?
Hb_FSetAttr( "xx.prg", 1 ) // Read Only
Hb_Run( "Attrib xx.prg" )
?
Hb_FSetAttr( "xx.prg", 2 ) // Hiden
Hb_Run( "Attrib xx.prg" )
?
Hb_FSetAttr( "xx.prg", 4 ) // System
Hb_Run( "Attrib xx.prg" )
?
Hb_FSetAttr( "xx.prg", 3 ) // Read Only, Hiden
Hb_Run( "Attrib xx.prg" )
?
Hb_FSetAttr( "xx.prg", 5 ) // Hiden, System
Hb_Run( "Attrib xx.prg" )
?
Hb_FSetAttr( "xx.prg", 7 ) // Read Only, Hiden, System
Hb_Run( "Attrib xx.prg" )
?
Hb_FSetAttr( "xx.prg", 0 ) // volta os atributos
Hb_Run( "Attrib xx.prg" )
Return Nil
Mudar atributos de um arquivo
Enviado: 26 Nov 2016 13:12
por lugab
Funcionou, Jairo, muito obrigado
Só acho que não é possível executar uma única vez o HB_FsetAttr() para alterar o atributo de vários arquivos,tipo "*.dbf"
Mudar atributos de um arquivo
Enviado: 26 Nov 2016 15:20
por Jairo Maia
Olá Lugab,
Não dá. Ele atua em um arquivo por vez, mas algo assim não ajudaria?:
Código: Selecionar todos
/*
Incluir a lib HBCT.LIB
*/
Function Main()
Local x, aFiles, cCaminho
Private cFile
cCaminho := DiskName() + ":" + DirName() + "\"
aFiles := Directory( cCaminho + "*.DBF" )
Clear Screen
?
?
For x=1 To Len( aFiles )
cFile := aFiles[ x, 1 ]
Hb_FSetAttr( cFile, 1 ) // Read Only
Hb_Run( "Attrib &cFile." )
Inkey(0)
If LastKey() = 27 // ESC sai...
Exit
EndIf
Next
Return Nil
Para voltar os atributos repete o processo com o parâmetro 0 (zero).
Mudar atributos de um arquivo
Enviado: 26 Nov 2016 18:54
por lugab
Sim, Jairo , a solução é essa mesmo, só que ficou muito mais lento do que fazer
O problema do "hb_run" é a tela preta