РЕШЕНО: Об информации исполняемого файла

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

РЕШЕНО: Об информации исполняемого файла

Сообщение Xenar » 06.07.2011 10:59:42

Захотелось выводить информацию о номере сборки своей программы. Нашел соответствующую статью http://fsweb.info/programming/lazarus/file_info.html но сразу же столкнулся с тем что Lazarus не может обнаружить модуль FileInfo. В инспекторе проекта FCL установлен.
Версия 0.9.30-0
FPC: 2.4.2
Ревизия SVN: i386-linux-gtk-2
Последний раз редактировалось Xenar 15.07.2011 15:53:45, всего редактировалось 1 раз.
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: Об информации исполняемого файла

Сообщение svk12 » 06.07.2011 13:25:18

RxLib, компонент TVersionInfo или просто использовать TAboutDialog оттуда же...
svk12
постоялец
 
Сообщения: 408
Зарегистрирован: 09.06.2008 18:42:47

Re: Об информации исполняемого файла

Сообщение Xenar » 06.07.2011 13:51:12

Мда походу придется пока забыть про эту фичу, почитал я сколько гимороя с установкой этого RxLib......
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: Об информации исполняемого файла

Сообщение Little_Roo » 06.07.2011 13:55:34

Xenar писал(а): почитал я сколько гимороя с установкой этого RxLib......

Правда? :D Никогда не было - работаю уже несколько лет, и полет нормальный...
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Об информации исполняемого файла

Сообщение Xenar » 06.07.2011 14:19:22

Little_Roo писал(а):
Xenar писал(а): почитал я сколько гимороя с установкой этого RxLib......

Правда? :D Никогда не было - работаю уже несколько лет, и полет нормальный...

Завидую вашему опыту белой завистью но с высоты моих пары месяцев в программировании несколько видится все по иному. Просто сильна уверенность что результат пляски по ценности будет ниже уровня необходимости в данной фичи. Ну и аллах с ней.
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: Об информации исполняемого файла

Сообщение svk12 » 06.07.2011 16:37:08

Честно говоря, ни малейшего гемора не заметил.
Ставишь rxnew.lpk отсюда :
http://lazarus-ccr.svn.sourceforge.net/ ... onents/rx/
и все дела.
svk12
постоялец
 
Сообщения: 408
Зарегистрирован: 09.06.2008 18:42:47

Re: Об информации исполняемого файла

Сообщение alexs » 11.07.2011 20:12:15

Xenar писал(а):почитал я сколько гимороя с установкой этого RxLib......

А самому проверить? Какие проблемы?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Об информации исполняемого файла

Сообщение Xenar » 12.07.2011 08:56:26

Проблемы? да сразу же они
Изображение
Но мне все же хотелось услышать комментарии от знающих почему модуль FileInfo отсутствует, который вроде бы давно должен быть по составе.
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: Об информации исполняемого файла

Сообщение Padre_Mortius » 12.07.2011 09:23:03

это не проблемы... это просят поставить компонент rx, который идет в составе лазаруса
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Об информации исполняемого файла

Сообщение dunin » 12.07.2011 10:09:36

Xenar, лазарус какой версии? У меня при установке RxNew он сам Rx цепляет. Я только сообщение вижу, что-то вроде "при установке также будет установлен паке Rx"
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Об информации исполняемого файла

Сообщение Xenar » 12.07.2011 10:28:09

dunin писал(а):Xenar, лазарус какой версии? У меня при установке RxNew он сам Rx цепляет. Я только сообщение вижу, что-то вроде "при установке также будет установлен паке Rx"

Версия 0.9.30-0
FPC: 2.4.2
Ревизия SVN: i386-linux-gtk-2

Добавлено спустя 1 минуту 38 секунд:
Padre_Mortius писал(а):это не проблемы... это просят поставить компонент rx, который идет в составе лазаруса

Так если он в составе лазаруса то почему он его не видит.
И там еще LCLBase пакет было.
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: Об информации исполняемого файла

Сообщение Padre_Mortius » 12.07.2011 10:56:33

Xenar, откуда ставился лазарус?
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Об информации исполняемого файла

Сообщение Xenar » 12.07.2011 11:21:42

Padre_Mortius писал(а):Xenar, откуда ставился лазарус?

Из реп http://www.hu.freepascal.org/lazarus/
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: Об информации исполняемого файла

Сообщение alexs » 12.07.2011 19:56:16

Это значит, что есть старая версия Lazarus-а.
Используй последнюю 0.9.31 и всё будет нормально.
LCLBase - это, как я понял, зависимость из 31-й версии.
Либо возьми с SVN версию, которая была при выходе 30-й версии Lazarus-а.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

РЕШЕНО: Об информации исполняемого файла

Сообщение Xenar » 15.07.2011 15:52:38

Решил я все таки эту задачку с выводом номера сборки без использования RXlib.
Может кому пригодится решение:
Создаем модуль vinfi
Код: Выделить всё
unit vinfo;

{$mode objfpc}

interface

uses
  Classes, SysUtils, resource, versiontypes, versionresource;

type
  { TVersionInfo }

  TVersionInfo = class
  private
    FVersResource: TVersionResource;
    function GetFixedInfo: TVersionFixedInfo;
    function GetStringFileInfo: TVersionStringFileInfo;
    function GetVarFileInfo: TVersionVarFileInfo;
  public
    constructor Create;
    destructor Destroy; override;

    procedure Load(Instance: THandle);
    property FixedInfo: TVersionFixedInfo read GetFixedInfo;
    property StringFileInfo: TVersionStringFileInfo read GetStringFileInfo;
    property VarFileInfo: TVersionVarFileInfo read GetVarFileInfo;
  end;

implementation

{ TVersionInfo }

function TVersionInfo.GetFixedInfo: TVersionFixedInfo;
begin
  Result := FVersResource.FixedInfo;
end;

function TVersionInfo.GetStringFileInfo: TVersionStringFileInfo;
begin
  Result := FVersResource.StringFileInfo;
end;

function TVersionInfo.GetVarFileInfo: TVersionVarFileInfo;
begin
  Result := FVersResource.VarFileInfo;
end;

constructor TVersionInfo.Create;
begin
  inherited Create;
  FVersResource := TVersionResource.Create;
end;

destructor TVersionInfo.Destroy;
begin
  FVersResource.Free;
  inherited Destroy;
end;

procedure TVersionInfo.Load(Instance: THandle);
var
  Stream: TResourceStream;
begin
  Stream := TResourceStream.CreateFromID(Instance, 1, PChar(RT_VERSION));
  try
    FVersResource.SetCustomRawDataStream(Stream);
    // access some property to load from the stream
    FVersResource.FixedInfo;
    // clear the stream
    FVersResource.SetCustomRawDataStream(nil);
  finally
    Stream.Free;
  end;
end;
end.

сохраняем его в папку со своей программой как vinfo.pas
Подключаем его как модуль на нужную форму
Код: Выделить всё
uses vinfo

Реализовываем примерно по следующему примеру
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
// initialize a bunch of stuff for this app when the form is first opened
// [0] = Major version, [1] = Minor ver, [2] = Revision, [3] = Build Number
// The above values can be found in the menu: Project > Project Options > Version Info
Var
  MajorNum : String;
  MinorNum : String;
  RevisionNum : String;
  BuildNum : String;
  Info: TVersionInfo;
begin
  Info := TVersionInfo.Create;
  Info.Load(HINSTANCE);
  // grab just the Build Number
  MajorNum := IntToStr(Info.FixedInfo.FileVersion[0]);
  MinorNum := IntToStr(Info.FixedInfo.FileVersion[1]);
  RevisionNum := IntToStr(Info.FixedInfo.FileVersion[2]);
  BuildNum := IntToStr(Info.FixedInfo.FileVersion[3]);
  Info.Free;
Label1.Caption := 'Сборка '+MajorNum+'.'+MinorNum+'.'+RevisionNum+'.'+BuildNum;
end;

Честно скомуниздил с буржуйского форума freepascal :)
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

Рейтинг@Mail.ru
cron