Я обновляю программу до Delphi XE7 из Delphi 2010. Код, показанный ниже, перестал работать, я думаю, из-за необходимости адаптироваться к Unicode и использовать GetFileVersionInfoW вместо GetFileVersionInfoSize.
Кто-нибудь разработал более современную версию функции, которую я использовал, показанную ниже? Я пока не могу найти никаких примеров в сети, и боюсь, что программирование под Windows на низком уровне мне не по силам.
Спасибо за любую помощь!
Старый код ниже больше не работает на Delphi XE2 и более поздних версиях: просто возвращает 1.0.0.0
procedure GetBuildInfo(var V1, V2, V3, V4: Word);
{From Steve Schafer }
var
VerInfoSize: DWORD;
VerInfo: pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
begin
VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, '\', pointer(VerValue), VerValueSize);
with VerValue^ do
begin
V1 := dwFileVersionMS shr 16;
V2 := dwFileVersionMS and $FFFF;
V3 := dwFileVersionLS shr 16;
V4 := dwFileVersionLS and $FFFF;
end;
FreeMem(VerInfo, VerInfoSize);
end;
4.3.2.1
. - person Ken White   schedule 05.12.2014(P)Char
. Таким образом,GetFileVersionInfoSize()
иGetFileVersionInfo()
фактически сопоставляются сGetFileVersionInfoSizeA()
иGetFileVersionInfoA()
в Delphi 2007 и ранее и сопоставляются сGetFileVersionInfoSizeW()
иGetFileVersionInfoW()
в Delphi 2009 и позже. Поэтому этот код работает во всех версиях Delphi без каких-либо изменений. - person Remy Lebeau   schedule 05.12.2014GetFileVersionInfo()
: stackoverflow.com/a/ 13942403/65863 - person Remy Lebeau   schedule 05.12.2014