Вопрос, поднятый Ian Branch, заключается в поиске способа автоматического обновления информации о версии компилятора Delphi, которая отображается в информационном окне "О программе" приложений. Вместо ручного обновления версии, Ian хочет использовать встроенные средства Delphi для получения этой информации.
Решение с использованием CompilerVersion
Исходя из контекста, предложенное решение от Anders Melander заключается в использовании константы CompilerVersion, определенной в модуле system.pas. Однако, как отметил Ian, данный метод возвращает только числовой код версии, который не является интуитивно понятным для пользователя.
Альтернативное решение с использованием GetRTLVersion
DelphiUdIT предложил использовать функцию GetRTLVersion, доступную в модуле system.pas начиная с версии Athens 12. Эта функция возвращает информацию о главной и дополнительной версиях RTL, но не включает информацию о патчах.
Использование сторонних библиотек
Limelect предложил использовать библиотеку TjvVersionInfo из JVCL для получения версии приложения, но отметил, что это возвращает версию самого приложения, а не версии Delphi. Также был предложен собственный код, который возвращает версию приложения, но не версию Delphi.
Комбинированное решение
Исходя из обсуждения, можно предложить следующий подход:
Использовать функцию GetRTLVersion для получения основной версии Delphi.
Использовать предопределенные константы для определения дополнительной версии (например, RTLVersion121, RTLVersion122, и т.д.).
Дополнить решение кодом, который определит наличие патчей (если таковые имеются).
Пример кода на Object Pascal, который может быть использован в вашем приложении:
program ShowDelphiVersionInfo;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
System.Classes;
function GetDelphiVersion: string;
var
CompilerVersion: Double;
begin
CompilerVersion := CompilerVer;
if CompilerVersion > 0 then
begin
case CompilerVersion of
9.0: Result := 'Delphi 2';
10.0: Result := 'Delphi 3';
12.0: Result := 'Delphi 4';
13.0: Result := 'Delphi 5';
14.0: Result := 'Delphi 6';
15.0: Result := 'Delphi 7';
16.0: Result := 'Delphi 2005';
17.0: Result := 'Delphi 2006';
18.0: Result := 'Delphi 2007';
19.0: Result := 'Delphi 2009';
20.0: Result := 'Delphi 2010';
21.0: Result := 'Delphi XE';
22.0: Result := 'Delphi XE2';
23.0: Result := 'Delphi XE3';
24.0: Result := 'Delphi XE4';
25.0: Result := 'Delphi XE5';
26.0: Result := 'Delphi XE6';
27.0: Result := 'Delphi 10 Seattle';
32.0: Result := 'Delphi 10.2 Tokyo';
33.0: Result := 'Delphi 10.3 Rio';
34.0: Result := 'Delphi 10.4 Sydney';
35.0: Result := 'Delphi 11 Alexandria';
36.0: begin
if Declared(RTLVersion121) then
Result := 'Delphi 12.1 Athens'
else if Declared(RTLVersion122) then
Result := 'Delphi 12.2 Athens'
else if Declared(RTLVersion123) then
Result := 'Delphi 12.3 Athens' // Предполагаемое определение
else
Result := 'Delphi 12.0 Athens';
end;
else
Result := 'Неизвестная версия компилятора';
end;
end
else
Result := 'Ошибка определения версии компилятора';
end;
begin
Writeln(GetDelphiVersion);
Readln;
end.
Этот код необходимо доработать, добавив логику определения патчей, если это необходимо, и интегрировать в ваше приложение, чтобы отображать информацию в информационном окне "О программе".
Вопрос состоит в поиске способа автоматически обновлять информацию о версии компилятора Delphi, отображаемую в информационном окне 'О программе' приложений, используя встроенные средства Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.