我有以下代码,试图使用JclIDEUtils检测Delphi安装。为了测试它,我设置了两个虚拟机,都运行win7,在两个系统中我都安装了Delphi XE3,但在VM n1中我也安装了Jcl,在VM n2中我没有。好吧,在n1我的小程序工作良好,找到Delphi XE3,在n2它没有!我试图在两个虚拟机中远程调试程序,但我理解的唯一一件事是,如果没有安装Jcl,实例化tjclborradtoolinstallation类的对象只是保持空。
这是我的代码在OnShow事件的我的形式:
procedure TForm1.FormShow(Sender: TObject);
var
I, X: Integer;
TN, SubTn: TTreeNode;
IconIndex: Integer;
begin
FDelphiInstallations := TJclBorRADToolInstallations.Create;
for I := 0 to FDelphiInstallations.Count - 1 do
begin
IconIndex := ilDelphiIcons.AddIcon(GetSmallIcon(FDelphiInstallations[I].IdeExeFileName));
TN := tvDisplay.Items.AddChild(nil, FDelphiInstallations[I].Name);
TN.ImageIndex := ilDelphiIcons.Count - 1;
TN.SelectedIndex := ilDelphiIcons.Count - 1;
with tvDisplay.Items do
begin
SubTn := AddChild(TN, 'Description: ' + FDelphiInstallations[I].Description);
SubTn.ImageIndex := 0;
SubTn := AddChild(TN, 'Root directory: ' + FDelphiInstallations[I].RootDir);
SubTn.ImageIndex := 0;
SubTn := AddChild(TN, 'Projects directory: '+ FDelphiInstallations[i].DefaultProjectsDir);
SubTn.ImageIndex := 0;
SubTn := AddChild(TN, 'Common Projects directory: '+ FDelphiInstallations[i].CommonProjectsDir);
SubTn.ImageIndex := 0;
SubTn := AddChild(TN, 'Executable File name: '+ FDelphiInstallations[i].IdeExeFileName);
SubTn.ImageIndex := 0;
SubTn := AddChild(TN, 'Build number: '+ FDelphiInstallations[i].IdeExeBuildNumber);
SubTn.ImageIndex := 0;
SubTn := AddChild(TN, 'VersionNumberStr='+ FDelphiInstallations[i].VersionNumberStr);
SubTn.ImageIndex := 0;
SubTn := AddChild(TN, 'Registry key='+ FDelphiInstallations[i].ConfigDataLocation);
SubTn.ImageIndex := 0;
for X := 0 to FDelphiInstallations[i].IdePackages.Count - 1 do
begin
SubTn := AddChild(TN, 'Description: ' + FDelphiInstallations[I].IdePackages.PackageFileNames[X]);
SubTn.ImageIndex := 0;
end;
end;
end;
end;
有人知道这个问题吗?
提前感谢您的建议
Jcl未能检测到Delphi安装,因为我没有运行Delphi。一旦我运行了Delphi, JclIDEUtils检测到它的安装,我的测试程序成功地显示了Delphi的安装数据。