Страница 2 из 2
Re: Извлечение информации из исполняемого файла
Добавлено: 11.01.2016 09:11:08
Снег Север
ANTIKLAN писал(а):Я так понял мне нужно открыть исходник модуля и посмотреть реализацию нужных классов и методов. Так? Можно ли это сделать из самой среды или нужно найти нужный файл в папке?
Если вы
настолько не владеете средой разработки, то дело плохо...
Поступаете так - создаете пустой тестовый проект с одной формой. В секцию uses модуля добавляете FileInfo и сохраняете проект. Удерживая клавишу ctrl щелкаете левой кнопкой мыши на FileInfo - это открывает модуль в новой закладке. Там, в секции interface смотрите описания классов и функций. Например, TFileVersionInfo имеет свойство VersionStrings. Кладете на форму своего проекта компоненты Memo1 и кнопку (button1), жмете дважды левой клавишей мыши на button, чтобы создать обработчик Button1Click. В обработчике описываете переменную Version: TFileVersionInfo. Дальше пишете примерно следующее:
Код: Выделить всё
Version:=TFileVersionInfo.create(Nil);
Version.fileName := Application.ExeName;
Memo1.Clear;
for i := 0 to Version.VersionStrings.Count-1 do
begin
Memo1.Lines.Add('['+Version.VersionCategories[i]+']'+'='+Version.VersionStrings[i]);
end;
Version.Free;
Получаете полный список свойств, из которых потом берете в рабочую программу нужное. Модуль FileInfo хорошо откомментирован в тексте, так что не понять, что и как, сложно...
Re: Извлечение информации из исполняемого файла
Добавлено: 11.01.2016 09:54:18
Deimos
ANTIKLAN писал(а): функции или процедуры для Free Pascal для извлечения данных о версии
Код: Выделить всё
function get_version_info: string;
// initialize a bunch of stuff for this app when the form is first opened
// [0] = Major version, [1] = Minor ver, [3] = Revision, [4] = Build Number
// The above values can be found in the menu: Project > Project Options > Version Info
// Add the following to your uses statement: vinfo, versiontypes
var
Info: TVersionInfo;
begin
Info := TVersionInfo.Create;
Info.Load(HINSTANCE);
// grab just the Build Number
result:='Версия: '+IntToStr(Info.FixedInfo.FileVersion[0])+'.'+IntToStr(Info.FixedInfo.FileVersion[1])+'.'+IntToStr(Info.FixedInfo.FileVersion[2])+'.'+IntToStr(Info.FixedInfo.FileVersion[3]);
Info.Free;
end;
Не забудьте в USES добавить vinfo;
Re: Извлечение информации из исполняемого файла
Добавлено: 11.01.2016 16:50:36
ANTIKLAN
Снег Север писал(а):ANTIKLAN писал(а):Я так понял мне нужно открыть исходник модуля и посмотреть реализацию нужных классов и методов. Так? Можно ли это сделать из самой среды или нужно найти нужный файл в папке?
Если вы
настолько не владеете средой разработки, то дело плохо...
Поступаете так - создаете пустой тестовый проект с одной формой. В секцию uses модуля добавляете FileInfo и сохраняете проект. Удерживая клавишу ctrl щелкаете левой кнопкой мыши на FileInfo - это открывает модуль в новой закладке. Там, в секции interface смотрите описания классов и функций. Например, TFileVersionInfo имеет свойство VersionStrings. Кладете на форму своего проекта компоненты Memo1 и кнопку (button1), жмете дважды левой клавишей мыши на button, чтобы создать обработчик Button1Click. В обработчике описываете переменную Version: TFileVersionInfo. Дальше пишете примерно следующее:
Код: Выделить всё
Version:=TFileVersionInfo.create(Nil);
Version.fileName := Application.ExeName;
Memo1.Clear;
for i := 0 to Version.VersionStrings.Count-1 do
begin
Memo1.Lines.Add('['+Version.VersionCategories[i]+']'+'='+Version.VersionStrings[i]);
end;
Version.Free;
Получаете полный список свойств, из которых потом берете в рабочую программу нужное. Модуль FileInfo хорошо откомментирован в тексте, так что не понять, что и как, сложно...
Вот теперь все понятно. Теперь можно двигаться дальше.
Deimos писал(а):ANTIKLAN писал(а): функции или процедуры для Free Pascal для извлечения данных о версии
Код: Выделить всё
function get_version_info: string;
// initialize a bunch of stuff for this app when the form is first opened
// [0] = Major version, [1] = Minor ver, [3] = Revision, [4] = Build Number
// The above values can be found in the menu: Project > Project Options > Version Info
// Add the following to your uses statement: vinfo, versiontypes
var
Info: TVersionInfo;
begin
Info := TVersionInfo.Create;
Info.Load(HINSTANCE);
// grab just the Build Number
result:='Версия: '+IntToStr(Info.FixedInfo.FileVersion[0])+'.'+IntToStr(Info.FixedInfo.FileVersion[1])+'.'+IntToStr(Info.FixedInfo.FileVersion[2])+'.'+IntToStr(Info.FixedInfo.FileVersion[3]);
Info.Free;
end;
Не забудьте в USES добавить vinfo;
Спасибо большое. Развиваемся дальше.

Re: Извлечение информации из исполняемого файла
Добавлено: 13.01.2016 04:24:16
ANTIKLAN
Все. Сделал. Вот что у меня получилось для отображения версии программы с использованием модуля FileInfo:
Код: Выделить всё
procedure TAboutForm.FormCreate(Sender: TObject);
var
FileVersionInfo: TFileVersionInfo;
begin
FileVersionInfo := TFileVersionInfo.Create(nil);
FileVersionInfo.FileName := Application.ExeName;
AboutVersionLabel.Caption := 'Версия: ' + FileVersionInfo.getVersionSetting('FileVersion');
FileVersionInfo.Free;
end;