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

Информация о версии (Version Info) в Delphi EXE

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

Информация о версии (Version Info) в Delphi EXE


unit rpVersionInfo; //версия 1.0 3/8/98 записана и проверена в Delphi 3.
(*Автор Rick Peterson, данный компонент распространяется свободно

и освобожден от платы за использование. В случае изменения
авторского кода просьба прислать измененный код. Сообщайте пожалуйста
обо всех найденных ошибках. Адрес для писем - rickpet@airmail.net. *)

interface

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  TypInfo;

type
{$M+}
  (* Видели директиву $M+??? Это заставляет Delphi включать в код RTTI-информацию для

  перечислимых типов. В основном допускает работу с перечислимыми типами как
  со строками с помощью GetEnumName *)
  TVersionType = (vtCompanyName, vtFileDescription, vtFileVersion,
    vtInternalName,
    vtLegalCopyright, vtLegalTradeMark, vtOriginalFileName,
    vtProductName, vtProductVersion, vtComments);
{$M-}

  TrpVersionInfo = class(TComponent)
    (* Данный компонент позволяет получать информацию о версии вашего приложения

    во время его выполенния *)
  private
    FVersionInfo: array[0..ord(high(TVersionType))] of string;
  protected
    function GetCompanyName: string;
    function GetFileDescription: string;
    function GetFileVersion: string;
    function GetInternalName: string;
    function GetLegalCopyright: string;
    function GetLegalTradeMark: string;
    function GetOriginalFileName: string;
    function GetProductName: string;
    function GetProductVersion: string;
    function GetComments: string;
    function GetVersionInfo(VersionType: TVersionType): string; virtual;
    procedure SetVersionInfo; virtual;
  public
    constructor Create(AOwner: TComponent); override;
  published
    (* Использовать это очень просто - Label1.Caption := VersionInfo1.FileVersion

    Примечание: Все свойства - только для чтения, поэтому они недоступны в
    Инспекторе Объектов *)
    property CompanyName: string read GetCompanyName;
    property FileDescription: string read GetFileDescription;
    property FileVersion: string read GetFileVersion;
    property InternalName: string read GetInternalName;
    property LegalCopyright: string read GetLegalCopyright;
    property LegalTradeMark: string read GetLegalTradeMark;
    property OriginalFileName: string read GetOriginalFileName;
    property ProductName: string read GetProductName;
    property ProductVersion: string read GetProductVersion;
    property Comments: string read GetComments;
  end;

procedure Register;

implementation

constructor TrpVersionInfo.Create(AOwner: TComponent);
begin

  inherited Create(AOwner);
  SetVersionInfo;
end;

function TrpVersionInfo.GetCompanyName: string;
begin

  result := GeTVersionInfo(vtCompanyName);
end;

function TrpVersionInfo.GetFileDescription: string;
begin

  result := GeTVersionInfo(vtFileDescription);
end;

function TrpVersionInfo.GetFileVersion: string;
begin

  result := GeTVersionInfo(vtFileVersion);
end;

function TrpVersionInfo.GetInternalName: string;
begin

  result := GeTVersionInfo(vtInternalName);
end;

function TrpVersionInfo.GetLegalCopyright: string;
begin

  result := GeTVersionInfo(vtLegalCopyright);
end;

function TrpVersionInfo.GetLegalTradeMark: string;
begin

  result := GeTVersionInfo(vtLegalTradeMark);
end;

function TrpVersionInfo.GetOriginalFileName: string;
begin
  result := GeTVersionInfo(vtOriginalFileName);
end;

function TrpVersionInfo.GetProductName: string;
begin
  result := GeTVersionInfo(vtProductName);
end;

function TrpVersionInfo.GetProductVersion: string;
begin
  result := GeTVersionInfo(vtProductVersion);
end;

function TrpVersionInfo.GetComments: string;
begin
  result := GeTVersionInfo(vtComments);
end;

function TrpVersionInfo.GeTVersionInfo(VersionType: TVersionType): string;
begin
  result := FVersionInfo[ord(VersionType)];
end;

procedure TrpVersionInfo.SeTVersionInfo;
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;

procedure Register;
begin
  RegisterComponents('FreeWare', [TrpVersionInfo]);
end;

end.

Это компонент Delphi под названием rpVersionInfo, который предоставляет информацию о версии приложения в реальном времени. Он был написан Риком Петерсоном и является свободным для использования, модификации и распространения.

Вот разбивка кода:

Интерфейс Секция интерфейса объявляет тип TVersionType, который представляет собой различные типы информации о версии (например, название компании, описание файла, номер версии и т.д.). Она также объявляет класс компонента TrpVersionInfo, который наследуется от TComponent.

Имплементация В секции имплементации есть несколько методов и свойств:

  • Конструктор Create инициализирует компонент и вызывает метод SetVersionInfo, чтобы получить информацию о версии.
  • Методы GetCompanyName, GetFileDescription, ... , GetComments возвращают соответствующие строки информации о версии.
  • Метод GetVersionInfo возвращает информацию о версии для заданного типа VersionType.
  • Метод SetVersionInfo получает информацию о версии из реестра и хранит ее в массиве.

Процедура Register регистрирует компонент в палетке компонентов Delphi.

Замечания

  • Directive $M+ включает runtime type information (RTTI) для перечисленных типов.
  • Функция GetEnumName используется для получения имени перечисленного значения как строки.
  • Функция VerQueryValue используется для получения значения ресурса версии.

Использование Чтобы использовать этот компонент, создайте экземпляр класса TrpVersionInfo и доступ к его свойствам (например, CompanyName, FileDescription и т.д.), чтобы получить соответствующую информацию о версии. Обратите внимание, что все свойства являются только для чтения, поэтому они не могут быть изменены в Инспекторе объектов.

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

В статье описывается компонент Delphi для работы с информацией о версии приложения (версия Info), который позволяет получить доступ к различным свойствам версии, таким как компания, файловая описание, файловая версия и другие.


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

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




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


:: Главная :: EXE файл ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-07-01 23:41:07/0.0039889812469482/0