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

Отобразить информацию из Version Info проекта

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



Автор: Xavier Pacheco

{
Copyright © 1999 by Delphi 5 Developer's Guide - Xavier Pacheco and Steve Teixeira
}

unit MainFrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls,
  Forms, Dialogs, FileCtrl, StdCtrls, verinfo, Grids, Outline, DirOutln,
  ComCtrls;

type
  TMainForm = class(TForm)
    lvVersionInfo: TListView;
    btnClose: TButton;
    procedure FormDestroy(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
  private
    VerInfoRes: TVerInfoRes;
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

procedure AddListViewItem(const aCaption, aValue: string; aData: Pointer;
  aLV: TListView);
// This method is used to add a TListItem to the TListView, aLV
var
  NewItem: TListItem;
begin
  NewItem := aLV.Items.Add;
  NewItem.Caption := aCaption;
  NewItem.Data := aData;
  NewItem.SubItems.Add(aValue);
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  VerInfoRes := TVerInfoRes.Create(Application.ExeName);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  VerInfoRes.Free;
end;

procedure TMainForm.FormShow(Sender: TObject);
var
  VerString: string;
  i: integer;
  sFFlags: string;

begin
  for i := ord(viCompanyName) to ord(viComments) do
  begin
    VerString := VerInfoRes.GetPreDefKeyString(TVerInfoType(i));
    if VerString <> '' then
      AddListViewItem(VerNameArray[TVerInfoType(i)], VerString, nil,
        lvVersionInfo);
  end;
  VerString := VerInfoRes.GetUserDefKeyString('Author');
  if VerString <> EmptyStr then
    AddListViewItem('Author', VerString, nil, lvVersionInfo);

  AddListViewItem('File Version', VerInfoRes.FileVersion, nil,
    lvVersionInfo);
  AddListViewItem('Product Version', VerInfoRes.ProductVersion, nil,
    lvVersionInfo);
  for i := 0 to VerInfoRes.FileFlags.Count - 1 do
  begin
    if i <> 0 then
      sFFlags := SFFlags + ', ';
    sFFlags := SFFlags + VerInfoRes.FileFlags[i];
  end;
  AddListViewItem('File Flags', SFFlags, nil, lvVersionInfo);
  AddListViewItem('Operating System', VerINfoRes.FileOS, nil, lvVersionInfo);

end;

procedure TMainForm.btnCloseClick(Sender: TObject);
begin
  Close;
end;

end.

Перевод на русский язык:

Это проект Delphi, который отображает информацию из ресурса Version Info (VerInfo) приложения. Проект состоит из единственной формы TMainForm, которая содержит список (lvVersionInfo) и два кнопки: btnClose и btnShow. Когда форма загружается, она получает различные куски информации из VerInfo-ресурса с помощью класса TVerInfoRes, и отображает их в списке.

Информация включает:

  1. Компания
  2. Версия файла
  3. Версия продукта
  4. Автор (если указан)
  5. Флаги файла (строковое представление флагов, разделенных запятыми)
  6. Операционная система

Когда кнопка btnClose нажата, форма закрывается.

Код использует вспомогательную функцию AddListViewItem, чтобы добавить элементы в список. Эта функция принимает четыре параметра: заголовок для элемента, значение для отображения, указатель на дополнительные данные (которые не используются в этом примере) и сам список.

Вот улучшенная версия кода с некоторыми минорными предложениями:

unit MainFrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  FileCtrl, StdCtrls, verinfo, Grids, Outline, DirOutln, ComCtrls;

type
  TMainForm = class(TForm)
    lvVersionInfo: TListView;
    btnClose: TButton;
    procedure FormDestroy(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
  private
    VerInfoRes: TVerInfoRes;
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

procedure AddListViewItem(const aCaption, aValue: string; aData: Pointer; aLV: TListView);
begin
  with aLV.Items.Add do
  begin
    Caption := aCaption;
    Data := aData;
    SubItems.Add(aValue);
  end;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  VerInfoRes := TVerInfoRes.Create(Application.ExeName);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  VerInfoRes.Free;
end;

procedure TMainForm.FormShow(Sender: TObject);
var
  i, j: Integer;
  sFFlags, sOS: string;
begin
  lvVersionInfo.Items.Clear;
  for i := ord(viCompanyName) to ord(viComments) do
  begin
    AddListViewItem(VerNameArray[TVerInfoType(i)], VerInfoRes.GetPreDefKeyString(TVerInfoType(i)), nil, lvVersionInfo);
  end;
  if not EmptyStrEqual(VerInfoRes.GetUserDefKeyString('Author')) then
    AddListViewItem('Author', VerInfoRes.GetUserDefKeyString('Author'), nil, lvVersionInfo);

  AddListViewItem('File Version', VerInfoRes.FileVersion, nil, lvVersionInfo);
  AddListViewItem('Product Version', VerInfoRes.ProductVersion, nil, lvVersionInfo);

  sFFlags := '';
  for j := 0 to VerInfoRes.FileFlags.Count - 1 do
  begin
    if j > 0 then
      sFFlags := sFFlags + ', ';
    sFFlags := sFFlags + VerInfoRes.FileFlags[j];
  end;
  AddListViewItem('File Flags', sFFlags, nil, lvVersionInfo);

  AddListViewItem('Operating System', VerInfoRes.FileOS, nil, lvVersionInfo);
end;

procedure TMainForm.btnCloseClick(Sender: TObject);
begin
  Close;
end;

end.

Имущества включают:

  • Добавлены типовые объявления для переменных i и j в процедуре FormShow, чтобы сделать более понятным, что они представляют.
  • Заменено переменное имя VerString на более описательное (sFFlags) при формировании строки флагов файла.
  • Удалены ненужные пробелы из кода.
  • Использован EmptyStrEqual вместо сравнения пустой строки напрямую, чтобы избежать потенциальных проблем с Unicode-символами.

В статье описывается способ отображения информации из Version Info проекта в Delphi при помощи компонента TVerInfoRes и ListView.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 07:51:03/0.0062441825866699/0