Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Дата генерации exe в самом exe...


Layner ©   (2008-12-01 16:41:00) 

Здравствуйте! Как подставить в переменную дату генерации собственного exe? Как константу забивать каждый раз в pas файл не хочется. Есть ли директивы полезные в фигурных скобках {}, или без них обойтись можно?

MessageDlg(Этот exe создали: 1 декабря 2008г.', mtInformation, [mbOk], 0);

Хотелось бы вот усовершенствовать данный код ;)

Заранее благодарю!


blackman   (2008-12-02 12:31:00) [1]

function CurrentFileInfo(NameApp : string) : string;
var dump: DWORD;
   size: integer;
   buffer: PChar;
   VersionPointer, TransBuffer: PChar;
   Temp: integer;
   CalcLangCharSet: string;
begin
 size := GetFileVersionInfoSize(PChar(NameApp), dump);
 buffer := StrAlloc(size+1);
 try
  GetFileVersionInfo(PChar(NameApp), 0, size, buffer);

  VerQueryValue(buffer, '\VarFileInfo\Translation', pointer(TransBuffer),
dump);
  if dump >= 4 then
   begin
    temp:=0;
    StrLCopy(@temp, TransBuffer, 2);
    CalcLangCharSet:=IntToHex(temp, 4);
    StrLCopy(@temp, TransBuffer+2, 2);
    CalcLangCharSet := CalcLangCharSet+IntToHex(temp, 4);
   end;

  VerQueryValue(buffer, pchar('\StringFileInfo\'+CalcLangCharSet+
            '\'+'FileVersion'), pointer(VersionPointer), dump);
  if (dump > 1) then
   begin
    SetLength(Result, dump);
    StrLCopy(Pchar(Result), VersionPointer, dump);
   end
  else Result := '0.0.0.0';
 finally
   StrDispose(Buffer);
 end;
end;

...

s:=ExpandFileName(Application.ExeName);
s:=DateTimeToStr(FileDateToDateTime(FileAge(s)));  
s:=s+'  # '+CurrentFileInfo(Application.ExeName);

Конечно это не контроль версий, а дата последней компиляции с версией которую ставим ручками в проекте


Плохиш   (2008-12-02 10:16:00) [2]


> Германн ©   (02.12.08 01:19) [5]
>
> Пока нет системы контроля версий - всё это "мышиная возня"!

Если разруха в головах, то никакая система контроля версий не поможет.


Slym   (2008-12-02 05:39:00) [3]

Layner ©   (01.12.08 18:07) [2]
Автоматом

Если нажать Билд проекту то сделает +1...
если Компил то ничего не меняет


Eraser   (2008-12-02 04:19:00) [4]

> [0] Layner ©   (01.12.08 16:41)

Как то это можно автоматизировать через API IDE, только как не помню, помню, что Джо выкладывал тут пример.


Германн   (2008-12-02 01:19:00) [5]

Пока нет системыконтроля версий - всё это "мышиная возня"!
Ни номер билда, ни дата/время создания файла ничем не помогут. Только запутают нафиг до полного непонимания!
Плавали, знаем. :)


Layner   (2008-12-01 18:25:00) [6]

Леонид, спасибо, cmd в расчет не брал, идею понял, как вариант подойдет.


Leonid Troyanovsky   (2008-12-01 18:17:00) [7]


> Layner ©   (01.12.08 18:07) [2]

> определенного поля Version Info. (датой).

Например, сделай себе cmd файл.
Он обновит информацию о времени, скажем, в inc файле,
и скомпилирует новую версию (dcc32.exe).

--
Regards, LVT.


Layner   (2008-12-01 18:07:00) [8]

а информация как в версию пишется? Автоматом? Мне надо автозаполнение определенного поля Version Info. (датой).


Сергей М.   (2008-12-01 16:49:00) [9]

Зачем это может понадобиться ?
Неужели не достаточно инф-ции о версии ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо