Вниз
Скачать: 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.011 c
7-15323
Troll
2002-10-26 19:29
2003.01.06
АОН????


3-14902
Matolch
2002-12-12 21:48
2003.01.06
Динамическое создание таблицы.


7-15320
Дмитрий К.К.
2002-10-25 15:58
2003.01.06
Добавить в избранное: Opera


14-15258
alex134
2002-12-17 00:16
2003.01.06
dll ka


8-15169
Aric
2002-09-18 19:09
2003.01.06
Скроллинг изображения




   Наверх