Página 1 de 1

DATA & HORA do meu EXEcutável

Enviado: 27 Dez 2019 15:27
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

.

DATA & HORA do meu EXEcutável

Enviado: 27 Dez 2019 15:56
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

DATA & HORA do meu EXEcutável

Enviado: 27 Dez 2019 16:18
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...)

DATA & HORA do meu EXEcutável

Enviado: 27 Dez 2019 16:29
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...

DATA & HORA do meu EXEcutável

Enviado: 27 Dez 2019 16:51
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

DATA & HORA do meu EXEcutável

Enviado: 27 Dez 2019 17:57
por bencz
Ótima dica!!!