Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как вытащить VersionInfo из свойств проекта

Delphi , Программа и Интерфейс , Приложение своё

Как вытащить VersionInfo из свойств проекта


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;

Для извлечения информации о версии проекта из свойств проекта можно использовать функции GetFileVersionInfoSize и GetFileVersionInfo, предоставляемые Delphi.

Вот разбивка того, что код делает:

  1. Он сначала вызывает GetFileVersionInfoSize, чтобы получить размер информации о версии для указанного файла (в этом случае, NameApp).
  2. Затем он выделяет память для буфера с помощью StrAlloc.
  3. Он вызывает GetFileVersionInfo, чтобы извлечь информацию о версии из файла.
  4. Код затем использует VerQueryValue, чтобы извлечь конкретные значения из информации о версии. В этом случае, он извлекает информацию о переводе и файловой версии.

Чтобы получить VersionInfo, вы можете модифицировать код следующим образом:

function CurrentFileInfo(NameApp: string): TVersionInfo;
var
  dump: DWORD;
  size: integer;
  buffer: PChar;
  VersionPointer, TransBuffer: PChar;
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
       // Обработайте информацию о переводе...
    end;

    VerQueryValue(buffer, pchar('\StringFileInfo\' + CalcLangCharSet +
      '\'+'FileVersion'), pointer(VersionPointer), dump);

    Result := TVersionInfo.Create;
    Result.FileMajorPart := StrToInt(Copy(VersionPointer, 1, 4));
    Result.FileMinorPart := StrToInt(Copy(VersionPointer, 5, 4));
    Result.FileBuildPart := StrToInt(Copy(VersionPointer, 9, 4));
    Result.FilePrivatePart := StrToInt(Copy(VersionPointer, 13, 4));

  finally
    StrDispose(buffer);
  end;
end;

В этом модифицированном коде:

  • Функция CurrentFileInfo теперь возвращает объект TVersionInfo.
  • Она извлекает основные, второстепенные, строительные и частные части номера версии файла из буфера VersionPointer и устанавливает их на возвращаемом объекте TVersionInfo.

Объект TVersionInfo не является встроенным в Delphi; вам может потребоваться создать свой собственный или использовать третьепартийную библиотеку.

В статье описывается функция CurrentFileInfo, которая извлекает информацию о версии приложения из свойств проекта с помощью библиотеки VerQueryValue.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Приложение своё ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:58:19/0.0033619403839111/0