![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получить от компилятора текущую дату в констатнту, как?
sanx © (2009-09-02 13:11:00)Нужно для вывода инфы о дате компиляции. Хочу автоматизировать это. Сейчас пишу вручную :( Если ли директивы компилятора, которые смогут такое? Или может другой какой способ?
Rouse_ (2009-09-03 09:30:00) [1]
> вывело 19.06.1992, в чем может быть ошибка?
Хм, ну ошибка может быть только в том что по всей видимости тогда D2006 не прописывает время билда. на 2007-ой все нормально выводится, правда в формате GMT +0 (т.е. нужно переводить еще на текущее время)
sanx (2009-09-02 18:04:00) [2]Rouse_ сделал так DateToStr(GetPEDate(ParamStr(0))), вывело 19.06.1992, в чем может быть ошибка? Использую D2006, WinXP SP3, русская локаль :)
Сергей М., спасибо за ссылку, очень интересная тема.
Rouse_ (2009-09-02 14:50:00) [3]Ну можно снять данные с уже сбилженного файла:
function GetPEDate(FileName: string): TDateTime;
var
F: TMemoryStream;
ImageDosHeader: TImageDosHeader;
Signature: DWORD;
ImageFileHeader: TImageFileHeader;
begin
Result := 0;
F := TMemoryStream.Create;
try
F.LoadFromFile(FileName);
F.Position := 0;
F.Read(ImageDosHeader, SizeOf(TImageDosHeader));
if ImageDosHeader.e_magic = IMAGE_DOS_SIGNATURE then
begin
F.Position := ImageDosHeader._lfanew;
F.Read(Signature, SizeOf(DWORD));
if Signature = IMAGE_NT_SIGNATURE then
begin
F.Read(ImageFileHeader, SizeOf(TImageFileHeader));
Result := EncodeDate(1970, 1, 1) +
ImageFileHeader.TimeDateStamp / SecsPerDay;
end;
end;
finally
F.Free;
end;
end;
Сергей М. (2009-09-02 14:26:00) [4]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=899
см. AfterCompile