DATA & HORA do meu EXEcutável

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

Moderador: Moderadores

Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

DATA & HORA do meu EXEcutável

Mensagem por susviela@bol.com.br »

Estou pegando a Data do meu arquivo Executável assim:

Código: Selecionar todos

cArq:=  HB_ArgV( 0 )  
aDir := Directory( substr(cArq, RAT("\", cArq) + 1)	)
	
?  adir[1][3]	    //data do programa
. Tem como otimizar mais isso, ou está bem assim. Dicas / comentários

.
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

DATA & HORA do meu EXEcutável

Mensagem por bencz »

Uma alternativa, até mais segura, seria ler o header do executavel e fazer um parse na parte chamada IMAGE_FILE_HEADER do executável, que contem um campo chamado TimeDateStamp, que contem a data e hora da linkedição do executavel

Faço isso com os meus programas esrcitos em C/C++ ou C#...., portar o código C para o harbour não me parece ser algo muito complexo..., eu apenas não sei agora de cabeça, qual é a função da API do Harbour para retornar date time ou converter a struct time_t para o padrão do Harbour....

https://blog.kowalczyk.info/articles/pefileformat.html
Imagem
Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

DATA & HORA do meu EXEcutável

Mensagem por susviela@bol.com.br »

bencz escreveu:Uma alternativa, até mais segura, seria ler o header do executavel
Obrigado pela contribuição.

Posso esta falando besteira mas esse HB_ArgV(0) já não faz isso ?

(não manjo nada de C, C++ e outras baixarias. Hehehehe...)
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

DATA & HORA do meu EXEcutável

Mensagem por bencz »

Não, ele não faz.. ele apenas pega a informação dos atributos de data e hora de criação do arquivo no HD, que é gerenciado pelo sistema operacional... a informação que falei para usar, é gerada pelo linkeditor e é gravado dentro do executavel a data/hora de geração dele...
Imagem
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DATA & HORA do meu EXEcutável

Mensagem por asimoes »

hbmk2 financ.hbp -jobs=1 -DDESENV -bldhead=compdatetime.ch -comp=mingw

Código: Selecionar todos


/* Automatically generated by hbmk2. Do not edit. */
#define _HBMK_BUILD_ID_            "1090"
#define _HBMK_BUILD_ID_NUM_        1090
#define _HBMK_BUILD_YEAR_          "2019"
#define _HBMK_BUILD_DATE_          "20191227"
#define _HBMK_BUILD_TIME_          "16:09:06"
#define _HBMK_BUILD_TIMESTAMP_     "20191227160906345"
#define _HBMK_BUILD_TIMESTAMP_UTC_ "20191227190906345"
#define _HBMK_BUILD_RANDSTR_32_    "c3735af11f2322c170d50ad3781fa0d1aec860e4156f104ff74a3c3f982e70d3" 

No PRG faça a inclusão do header compdatetime.ch

#include "compdatetime.ch"

Depois:

dDataExe := hb_DtoC( STOD(_HBMK_BUILD_DATE_ ), "DD/MM/YYYY" )

Quando compilar esse header é criado em tempo de compilação e o header incluído no executável
►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)
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

DATA & HORA do meu EXEcutável

Mensagem por bencz »

Ótima dica!!!
Imagem
Responder