![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
в проге в окне about выводится дата создания новой версии проги.
можно ли както сделать чтоб во время компиляции туда подставилась дата текущая? а то вручную иногда забываю поправить |
|
#2
|
||||
|
||||
|
Код:
var
sAppName, sVersionType: string;
iAppSize, iLenOfValue, i: integer;
pcBuf, pcValue: PChar;
begin
sAppName := Application.ExeName;
iAppSize := GetFileVersionInfoSize(PChar(sAppName), iAppSize);
if iAppSize > 0 then
begin
pcBuf := AllocMem(iAppSize);
GetFileVersionInfo(PChar(sAppName), 0, iAppSize, pcBuf);
for i := 0 to Ord(High(TVersionType)) do
begin
sVersionType := GetEnumName(TypeInfo(TVersionType), i);
sVersionType := Copy(sVersionType, 3, length(sVersionType));
if VerQueryValue(pcBuf, PChar('StringFileInfo\040904E4\' +
sVersionType), Pointer(pcValue), iLenOfValue) then
FVersionInfo[i] := pcValue;
end;
FreeMem(pcBuf, iAppSize);
end;
end; |
|
#3
|
|||
|
|||
|
хмм,то есть таким же способоз извлекать дату создания exe файла?
но это не совсем то что я имел ввиду. может есть чтото типа условных комментариев для компилятора?както так. в {} скобках |
|
#4
|
||||
|
||||
|
Цитата:
Цитата:
Цитата:
Последний раз редактировалось angvelem, 18.04.2012 в 00:03. |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Snake22 (18.04.2012)
| ||
|
#5
|
||||
|
||||
|
-меню Project-Options...
-вкладка Version Info -ставим галочку Include version information in project -жмем кнопку Help -читаем в файле справки Version Info (Project|Options) -видим Note: For details on how to access version information programmatically, see Reading version information. -кликаем на Reading version information -читаем в файле справки Reading version information -видим Delphi example -кликаем на Delphi example -изучаем код: Код:
procedure TForm1.Button1Click(Sender: TObject);
const
InfoNum = 10;
InfoStr: array[1..InfoNum] of string = ('CompanyName', 'FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'LegalTradeMarks', 'OriginalFileName', 'ProductName', 'ProductVersion', 'Comments');
var
S: string;
n, Len, i: DWORD;
Buf: PChar;
Value: PChar;
begin
S := Application.ExeName;
n := GetFileVersionInfoSize(PChar(S), n);
if n > 0 then
begin
Buf := AllocMem(n);
Memo1.Lines.Add('VersionInfoSize = ' + IntToStr(n));
GetFileVersionInfo(PChar(S), 0, n, Buf);
for i := 1 to InfoNum do
if VerQueryValue(Buf, PChar('StringFileInfo\040904E4\' + InfoStr[i]), Pointer(Value), Len) then
Memo1.Lines.Add(InfoStr[i] + ' = ' + Value);
FreeMem(Buf, n);
end
else
Memo1.Lines.Add('No version information found');
end; |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
AlexSku (18.04.2012)
| ||