Prezados,
Possuo uma aplicação que funciona da seguinte maneira:
- No servidor fica o banco de dados.
- Nas estações ficam os executáveis do sistema. Tenho um controle a parte para manter o mesmo executável nas estações.
O que eu desejo é pegar a data e a hora de modificação do executável que esta sendo utilizado. Mas como o diretório atual é o do servidor, eu não consigo pegar a data do executável local. A chamada do executável pelo Windows ja passa a pasta de trabalho do servidor, então não tem como pegar a data antes de mudar para a pasta de trabalho pois já inicia com a pasta atual no servidor.
Fazendo referência ao Delphi eu tenho a função Application.Exename que me retorna a path completa do executável, desta forma tenho uma referência do executável que estou utilizando, mas não conheço ainda uma função semelhante no xHarbour.
Bom agradeço o seu interesse por ler este post, e caso eu descubra como fazê-lo estarei postando aqui a resposta.
Data e Hora do Executável
Moderador: Moderadores
-
Garoto de Programa
- Usuário Nível 1

- Mensagens: 37
- Registrado em: 23 Nov 2005 14:34
- Localização: Belo Horizonte/MG
- Contato:
-
infosys2
- Usuário Nível 1

- Mensagens: 23
- Registrado em: 10 Out 2008 06:36
- Localização: Sao Pulo
- Contato:
Re: Data e Hora do Executável
cExeName:=UPPER(EXENAME()) // Pegar o nome completo do executavel
Esta funcao pega o nome completo do executavel...
Esta funcao pega o nome completo do executavel...
Clipper, xHarbour, gtwvw, wvwtools, fivewin
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Data e Hora do Executável
ou
Exemplo pegando data e hora do Exe:
alert("Data da Ultima Atualização.: "+Data_Hora_ARQ(NomeExecutavel()))
Código: Selecionar todos
***********VEREFICA O NOME DO EXECUTAVEL E O CAMINHO DO MESMO*******************
*NomeExecutavel() // verefica o nome
*NomeExecutavel(.t.) // verefica o caminho
********************************************************************************
Function NomeExecutavel(lPath)
LOCAL nPos, cRet
If Empty(lpath)
nPos:= RAT("\", hb_argv(0))
cRet:= substr(hb_argv(0), nPos+1)
else
cRet:= hb_argv(0)
endif
Return cRet
alert("Data da Ultima Atualização.: "+Data_Hora_ARQ(NomeExecutavel()))
Código: Selecionar todos
#include "Directry.ch"
****************************
Function Data_Hora_ARQ(vArq)
****************************
SET CENTURY ON
SET DATE BRITISH
SET EPOCH TO 2000
aDir := Directory( vArq )
aRet := Transform(DtoC(aDir[1,3]),"@d")
aRet2 := aDir[1,4]
Return( aRet + " - " + aRet2 )
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
chrissoares
- Usuário Nível 1

- Mensagens: 45
- Registrado em: 23 Dez 2009 14:35
- Localização: Belo Horizonte/MG
- Contato:
Data e Hora do Executável
Bem,
Quando estava procurando por esta solução, não encontrei em nenhum local, mas agora que estava pesquisando sobre gerar arquivos PDF, encontrei a solução para este problema. Por este motivo resolvi compartilhar com os novatos como eu.
No xHarbour existem duas funções chamadas FileDate(cFileName) e FileTime(<cFileName>, <nAttributes>) que retornam a Data e a Hora de modificação de um arquivo qualquer. Os parâmetros destas funções são opcionais, sendo que elas vão utilizar o ultimo arquivo encontrado pela função FileSeek(). Mas para este caso deste tópico seria necessário passar o Nome do Executável como Parâmetro.
Um exemplo Simples para o seu uso seria.
No código usei a função ExeName(), como foi sugerido pelo colega infosys2, ela vai retornar o nome do executável da sua aplicação, é útil quando alguém trocar o nome dele, assim não vai gerar um erro de arquivo não encontrado.
Abraços a todos os colaboradores e que Deus continue abençoando cada um de vocês.
Espero
Quando estava procurando por esta solução, não encontrei em nenhum local, mas agora que estava pesquisando sobre gerar arquivos PDF, encontrei a solução para este problema. Por este motivo resolvi compartilhar com os novatos como eu.
No xHarbour existem duas funções chamadas FileDate(cFileName) e FileTime(<cFileName>, <nAttributes>) que retornam a Data e a Hora de modificação de um arquivo qualquer. Os parâmetros destas funções são opcionais, sendo que elas vão utilizar o ultimo arquivo encontrado pela função FileSeek(). Mas para este caso deste tópico seria necessário passar o Nome do Executável como Parâmetro.
Um exemplo Simples para o seu uso seria.
Código: Selecionar todos
procedure main()
Alert(FileDate(ExeName())) // Atenção pois o retorno da função FileDate é uma data.
Alert(FileTime(ExeName())) // A função FileTime retorna uma String.
Return nil
Abraços a todos os colaboradores e que Deus continue abençoando cada um de vocês.
Espero
Christiano R. Soares
Analista Desenvolvedor
www.bhdados.com.br
'Tudo o que fizerem, façam de todo o coração, como para o Senhor, e não para os homens, sabendo que receberão do Senhor a recompensa da herança. É a Cristo, o Senhor, que vocês estão servindo. '
Colossenses 3:23-24
Analista Desenvolvedor
www.bhdados.com.br
'Tudo o que fizerem, façam de todo o coração, como para o Senhor, e não para os homens, sabendo que receberão do Senhor a recompensa da herança. É a Cristo, o Senhor, que vocês estão servindo. '
Colossenses 3:23-24
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Data e Hora do Executável
Oi Christiano, realmente são úteis as dicas que você deixou. No entanto a questão fundamental do problema do "Garoto de Programa" é que não consegue pegar a data e hora do executável local, da estação. Veja:
Não sei se ele já resolveu o problema. Mas sendo assim, eu queria saber se existe algum arquivo .BAT que chama o sistema. E se no arquivo .BAT posiciona-se na pasta local na estação. Daí seria bem fácil dar a solução. Pois daí então caberia colocar a unidade C: para indicar que refere-se ao exe local. Exemplo: FileDate("C:"+Substr(ExeName(), (RAT("\",ExeName()))+1)) (aqui remove qualquer caminho ou path).Garoto de Programa escreveu:não consigo pegar a data do executável local
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Data e Hora do Executável
Para gravar data e hora de criação do executável eu faço assim:
na bat exemplo:
hbmk2 cadastra.hbp -rebuild -bldhead=compdatetime.ch
Eu criei um header chamado ambienteaplic.ch que é incluído no PRG principal
Assim, qualquer lib do meu sistema consegue pegar os valores deste include.
AmbienteAplic.ch
Como?
na bat exemplo:
hbmk2 cadastra.hbp -rebuild -bldhead=compdatetime.ch
Eu criei um header chamado ambienteaplic.ch que é incluído no PRG principal
Assim, qualquer lib do meu sistema consegue pegar os valores deste include.
AmbienteAplic.ch
Código: Selecionar todos
FUNCTION CompDateTime(aCompDateTime)
#include "compdatetime.ch"
aCompDateTime:={ DTOC(STOD(_HBMK_BUILD_DATE_)), _HBMK_BUILD_TIME_}
RETURN aCompDateTime
Código: Selecionar todos
aCompDateTime:={}
Eval({||CompDateTime(@aCompDateTime)})
cDataExe := aCompDateTime[1]+" "+aCompDateTime[2]
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
