Вниз
Скачать: CL | DM;

Количество Biuld ов проекта   Найти похожие ветки 

 
jee ©   (2002-12-24 12:04) [0]

Привет всем!
Хочется в About программы вставить количество билдов проекта. В справке есть пример с GetFileVersionInfo, однако он не работает. Include version information включено. В мемо выдается только его размер и больше ничего. Если кто знает в чем проблема, или как можно другим способом получить эту инфу, подскажите пожалуйста.


 
Игорь Шевченко ©   (2002-12-24 12:22) [1]

procedure TfAbout.FormCreate(Sender: TObject);

procedure GetFileVersion(FileName: string; var Major1, Major2,
Minor1, Minor2: Integer);
{ Helper function to get the actual file version information }
var
Info: Pointer;
InfoSize: DWORD;
FileInfo: PVSFixedFileInfo;
FileInfoSize: DWORD;
Tmp: DWORD;
begin
Major1 := 0;
Major2 := 0;
Minor1 := 0;
Minor2 := 0;
// Get the size of the FileVersionInformatioin
InfoSize := GetFileVersionInfoSize(PChar(FileName), Tmp);
// If InfoSize = 0, then the file may not exist, or
// it may not have file version information in it.
if InfoSize = 0 then
Exit;
// Allocate memory for the file version information
GetMem(Info, InfoSize);
try
// Get the information
GetFileVersionInfo(PChar(FileName), 0, InfoSize, Info);
// Query the information for the version
VerQueryValue(Info, "\", Pointer(FileInfo), FileInfoSize);
// Now fill in the version information
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;

var
VersionMajor: Integer;
VersionMinor: Integer;
Release, BuildNumber: Integer;

begin
if FileExists(Application.ExeName) then begin
GetFileVersion(Application.ExeName, VersionMajor, VersionMinor,
Release, BuildNumber);
cVersion.Caption := Format("Версия: %d.%d.%d (сборка %d)",
[VersionMajor, VersionMinor, Release, BuildNumber]);
end;
end;



 
jee ©   (2002-12-24 12:32) [2]

Спасибо огромное! Все заработало.
А можно пару комментариев? На сколько я понял, повлияла
VerQueryValue(Info, "\", Pointer(FileInfo), FileInfoSize);
строка вместо
VerQueryValue(Buf, PChar("StringFileInfo\040904E4\" + InfoStr[i], Pointer(Value), Len);
в примере.
Почему просто слэш надо ставить во втором параметре, и что это в экзампле за магические числа?


 
Игорь Шевченко ©   (2002-12-24 13:55) [3]

В экзампле выбор информации экзотического языка (откуда автор примера родом ?)

Кроме того, FileInfo (в моем примере) вроде не должно быть зависимым от языка :-)))


 
jee ©   (2002-12-24 14:20) [4]

Это да, прикольная структурка. :)) Еще раз спасибо.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
3-14901
mama
2002-12-07 07:19
2003.01.06
индекс пропадает...


1-15113
vicheslav
2002-12-22 14:53
2003.01.06
Excel как можно получить выделеный диапазон?


1-15072
ИгорьК
2002-12-24 14:10
2003.01.06
Завершение работы программы


14-15294
denisac
2002-12-04 10:38
2003.01.06
Работа началась!!!


1-15134
DenK_vrtz
2002-12-23 13:17
2003.01.06
Сменить системную дату в NT




   Наверх