![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать из файла ресурсов верссию проекта? [D6, WinXP]
^Sanya © (2002-08-08 17:36:00)Ведь она там хранится...
Заранее благодарен.
Poirot (2002-08-09 01:27:00) [1]
> Юрий Зотов © (08.08.02 23:24)
> > ресурс включается в конечный комп. файл проекта - зачем
> же
> > через ресурс получать версию
>
> Как раз оттуда ее и получают - из ресурса в теле exe/dll.
Я предполагал, что под ресурсом подр. RES(RC)... т.е. оттедльный файл....
^Sanya (2002-08-09 00:36:00) [2]Нашёл выход:
procedure GetFileVersion(FileName: string; var Major1, Major2,
Minor1, Minor2: Integer);
var
Info: Pointer;
InfoSize: DWORD;
FileInfo: PVSFixedFileInfo;
FileInfoSize: DWORD;
Tmp: DWORD;
begin
InfoSize := GetFileVersionInfoSize(PChar(FileName), Tmp);
if InfoSize = 0 then
raise Exception.Create("Can""t get file version information for "
+ FileName);
GetMem(Info, InfoSize);
try
GetFileVersionInfo(PChar(FileName), 0, InfoSize, Info);
VerQueryValue(Info, "\", Pointer(FileInfo), FileInfoSize);
Major1 := FileInfo.dwFileVersionMS shr 16;
Major2 := FileInfo.dwFileVersionMS and $FFFF;
Minor1 := FileInfo.dwFileVersionLS shr 16;
Minor2 := FileInfo.dwFileVersionLS and $FFFF;
finally
FreeMem(Info, FileInfoSize);
end;
end;
Юрий Зотов (2002-08-09 00:14:00) [3]> Кстати, а через GetFileVersionInfo не получится?
Получится. Насколько я помню, GetComCtlVersion через нее и работает.
> А более простого решения проблемы не существует?
Скопировать к себе код GetComCtlVersion и подправить пару строк - куда же еще проще-то?
^Sanya (2002-08-09 00:02:00) [4]Кстати, а через GetFileVersionInfo не получится?
^Sanya (2002-08-09 00:00:00) [5]> При том, что надо взять GetComCtlVersion за образец и написать свою такую же функцию.
А более простого решения проблемы не существует?
Юрий Зотов (2002-08-08 23:24:00) [6]> ресурс включается в конечный комп. файл проекта - зачем же
> через ресурс получать версию
Как раз оттуда ее и получают - из ресурса в теле exe/dll.
> Причём тут версия проекта(или приложения, если угодно)?
При том, что надо взять GetComCtlVersion за образец и написать свою такую же функцию.
^Sanya (2002-08-08 23:01:00) [7]->Poirot
Позволю себе цитату из классики:
GetComCtlVersion function -"indicates which version of ComCtl32.dll is installed." Причём тут версия проекта(или приложения, если угодно) ?
TTCustomDelphiMaster (2002-08-08 21:48:00) [8]^Sanya © (08.08.02 17:36)
Смотри в ComCtrls функцию
function GetComCtlVersion: Integer;
Poirot (2002-08-08 21:48:00) [9]посмотри здесь в ФАках... там есть что-то о получении версии...
Кстати получить версию из ресурса - это интересно.... Вы посмотрите напр через Resource WorkShop что собой представляет эта запись....
Кстати, ресурс включается в конечный комп. файл проекта - зачем же через ресурс получать версию???
^Sanya (2002-08-08 20:56:00) [10]Прошу прощения, а что есть за чудо такое - "RX"?
Я искал "TVersionInfo" как текст в папочке "Source"...увы, не нашёл :(
Помогите, пожалуйста. Заранее благодарю.
Skier (2002-08-08 17:39:00) [11]>^Sanya
В RX есть класс TVersionInfo