Для извлечения информации о версии проекта из свойств проекта можно использовать функции GetFileVersionInfoSize и GetFileVersionInfo, предоставляемые Delphi.
Вот разбивка того, что код делает:
Он сначала вызывает GetFileVersionInfoSize, чтобы получить размер информации о версии для указанного файла (в этом случае, NameApp).
Затем он выделяет память для буфера с помощью StrAlloc.
Он вызывает GetFileVersionInfo, чтобы извлечь информацию о версии из файла.
Код затем использует VerQueryValue, чтобы извлечь конкретные значения из информации о версии. В этом случае, он извлекает информацию о переводе и файловой версии.
Чтобы получить VersionInfo, вы можете модифицировать код следующим образом:
functionCurrentFileInfo(NameApp:string):TVersionInfo;vardump:DWORD;size:integer;buffer:PChar;VersionPointer,TransBuffer:PChar;beginsize:=GetFileVersionInfoSize(PChar(NameApp),dump);buffer:=StrAlloc(size+1);tryGetFileVersionInfo(PChar(NameApp),0,size,buffer);VerQueryValue(buffer,'\VarFileInfo\Translation',pointer(TransBuffer),dump);ifdump>=4thenbegin// Обработайте информацию о переводе...end;VerQueryValue(buffer,pchar('\StringFileInfo\'+CalcLangCharSet+'\'+'FileVersion'),pointer(VersionPointer),dump);Result:=TVersionInfo.Create;Result.FileMajorPart:=StrToInt(Copy(VersionPointer,1,4));Result.FileMinorPart:=StrToInt(Copy(VersionPointer,5,4));Result.FileBuildPart:=StrToInt(Copy(VersionPointer,9,4));Result.FilePrivatePart:=StrToInt(Copy(VersionPointer,13,4));finallyStrDispose(buffer);end;end;
В этом модифицированном коде:
Функция CurrentFileInfo теперь возвращает объект TVersionInfo.
Она извлекает основные, второстепенные, строительные и частные части номера версии файла из буфера VersionPointer и устанавливает их на возвращаемом объекте TVersionInfo.
Объект TVersionInfo не является встроенным в Delphi; вам может потребоваться создать свой собственный или использовать третьепартийную библиотеку.
В статье описывается функция CurrentFileInfo, которая извлекает информацию о версии приложения из свойств проекта с помощью библиотеки VerQueryValue.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.