【发布时间】:2013-01-03 13:50:24
【问题描述】:
我需要使用最新的 Indy 组件库版本。我可以通过一些源代码命令或任何其他技巧来获取库版本,以确保我使用的是正确的库。
我知道我正在使用indy....160.bpl - 这是我的Delphi XE2 在将鼠标移到组件栏上时所说的。我从Fulgan Indy 获取的最新 INDY 库
【问题讨论】:
标签: delphi delphi-xe2 indy
我需要使用最新的 Indy 组件库版本。我可以通过一些源代码命令或任何其他技巧来获取库版本,以确保我使用的是正确的库。
我知道我正在使用indy....160.bpl - 这是我的Delphi XE2 在将鼠标移到组件栏上时所说的。我从Fulgan Indy 获取的最新 INDY 库
【问题讨论】:
标签: delphi delphi-xe2 indy
如何在运行时使用 Indy 组件获取 Indy 版本?
正如@Remy 在他的评论中指出的那样,您可以使用Version 属性从任何Indy 组件中获取Indy 版本。这是使用TIdHTTP 组件的示例:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Indy version: ' + IdHTTP1.Version);
end;
如何在运行时获取没有 Indy 组件的 Indy 版本?
您可以获取 Indy 的版本控制格式的整个版本字符串:
<major>.<minor>.<release>.<build>
来自IdGlobal.pas 单元中包含的IdVers.inc 文件中定义的gsIdVersion 常量,方式如下:
uses
IdGlobal;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Indy version: ' + gsIdVersion);
end;
或者如果您至少从 2012 年 10 月 25 日 (4850) 开始有 Indy 修订版,您可以使用单独的版本信息元素,这些信息元素定义在与前面提到的相同的包含文件中,例如这样:
uses
IdGlobal;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Indy version: ' +
IntToStr(gsIdVersionMajor) + '.' +
IntToStr(gsIdVersionMinor) + '.' +
IntToStr(gsIdVersionRelease) + '.' +
IntToStr(gsIdVersionBuild)
);
end;
如何在设计时获取 Indy 版本?
要在设计时获取 Indy 版本,您只需右键单击放置在表单上的任何 Indy 组件,然后通过 About Internet Direct (Indy)... 菜单项打开其 About 框。
版本信息定义在哪里?
正如我之前提到的,它位于库的 ..\Lib\System\ 文件夹中的 IdVers.inc 包含文件中,它可能是如何获取 Indy 版本信息的下一个选项。
免责声明
这里提到的一些内容目前适用于 Indy 的最新版本,但我不确定它是否也适用于所有旧版本(例如 Indy 9)。
【讨论】:
gsIdVersionXXX 常量,所以这是一个相当新的东西。我会将这些信息包含在帖子中。
gsIdVersionXXX 定义未在 Indy 10 的 SVN 存储库的公共 trunk 分支中定义。它们是在 DelphiNextGen 分支中定义的,目前尚未公开使用。
gsIdVersion,而是有一个公共的IndyVersion 可用属性,它返回版本字符串(这与设计时关于对话框显示的属性值相同)。
如果你的应用已经有一个 Indy 组件的实例(它继承了 TIdBaseComponent),你可以简单地通过
Version := SomeIndyComponent.Version;
在当前版本中,该函数将返回10.5.9.0
【讨论】:
GetIndyVersion() 是公共 IndyVersion 属性的吸气剂。使用属性,而不是直接使用 getter:Version := SomeIndyComponent.IndyVersion;
Version,而不是IndyVersion。 [+1]