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