Página 1 de 1

Data e Hora do Executável

Enviado: 09 Dez 2008 11:37
por Garoto de Programa
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.

Re: Data e Hora do Executável

Enviado: 09 Dez 2008 13:00
por infosys2
cExeName:=UPPER(EXENAME()) // Pegar o nome completo do executavel

Esta funcao pega o nome completo do executavel...

Re: Data e Hora do Executável

Enviado: 13 Dez 2008 15:04
por sygecom
ou

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
Exemplo pegando data e hora do Exe:

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 )


Data e Hora do Executável

Enviado: 27 Mar 2012 16:53
por chrissoares
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.

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

Data e Hora do Executável

Enviado: 27 Mar 2012 20:16
por Pablo César
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:
Garoto de Programa escreveu:não consigo pegar a data do executável local
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).

Data e Hora do Executável

Enviado: 29 Set 2016 15:28
por asimoes
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

Código: Selecionar todos

FUNCTION CompDateTime(aCompDateTime)
   #include "compdatetime.ch"
   aCompDateTime:={ DTOC(STOD(_HBMK_BUILD_DATE_)), _HBMK_BUILD_TIME_}
RETURN aCompDateTime
Como?

Código: Selecionar todos

aCompDateTime:={}
Eval({||CompDateTime(@aCompDateTime)})
cDataExe  := aCompDateTime[1]+" "+aCompDateTime[2]