gpt4 book ai didi

delphi - 如何在Delphi 10.2中使用ToolsAPI获取当前项目的版本号

转载 作者:行者123 更新时间:2023-12-03 15:05:34 29 4
gpt4 key购买 nike

在 Delphi 2007 中,我可以使用以下 ToolsAPI 调用轻松获取当前项目的版本信息:

procedure Test;
var
ProjectOptions: IOTAProjectOptions;
Project: IOTAProject;
Major: Variant;
Minor: Variant;
Release: Variant;
Build: Variant;
begin
// GxOtaGetCurrentProject is a function in GExpert's GX_OTAUtils unit that returns the current IOTAProject
Project := GxOtaGetCurrentProject;
if Assigned(Project) then begin
ProjectOptions := Project.ProjectOptions;
if Assigned(ProjectOptions) then begin
Major := ProjectOptions.Values['MajorVersion'];
Minor := ProjectOptions.Values['MinorVersion'];
Release := ProjectOptions.Values['Release'];
Build := ProjectOptions.Values['Build'];
end;
end;
end;

在 Delphi 10.2.3 中,无论实际版本号如何,都将始终返回版本 1.0.0.0。这是“简单”的情况:VCL 应用程序。

我还尝试了返回 TStrings 指针的“Keys”值。在那里我还得到了 FileVersion 字符串,但它始终是“1.0.0.0”。

我想这与对各种平台和配置的支持有关,但我找不到任何关于它现在应该如何工作的文档。我还在 ToolsAPI.pas 中搜索了“版本”和“发布”,但没有发现任何可疑的情况。

有关如何获取 Delphi 10.2 中的版本信息的任何提示吗?

最佳答案

版本信息的有效值存储在构建配置平台的单独配置中。要访问配置,首先获取 IOTAProjectOptionsConfigurations 接口(interface):

cfgOpt := project.ProjectOptions as IOTAProjectOptionsConfigurations;

然后迭代每个IOTABuildConfiguration:

  for I := 0 to cfgOpt.ConfigurationCount - 1 do
begin
cfg := cfgOpt.Configurations[I];
DoWhatEverWith(cfg);
end;

请注意,每个IOTABuildConfiguration可以有多个平台和子平台:

  for S in cfg.Platforms do
begin
DoWhatEverWith(cfg.PlatformConfiguration[S]);
end;

for I := 0 to cfg.ChildCount - 1 do
begin
DoWhatEverWith(cfg.Children[I]);
end;

根据当前选择的平台和构建配置,可能会使用不同的版本信息值。当前平台和配置可以从 IOTAProject 属性 CurrentPlatformCurrentConfiguration 中检索。

关于delphi - 如何在Delphi 10.2中使用ToolsAPI获取当前项目的版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51180066/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com