如何在Inno Setup的TNewComboBox.Objects属性中存储COM对象?

时间:2010-07-02 10:36:28

标签: delphi inno-setup pascalscript

我正在使用Inno Setup为我的应用程序创建安装程序。我目前正在填充一个组合框(TNewComboBox),其中包含当前机器的IIS安装上的网站名称。现在我真正想做的是将COM对象与字符串一起存储在组合的objects属性中,但是即使在TObject(xxx)调用中包装COM对象时也会出现类型不匹配错误。

我在其他地方读过TStrings对象应该有一个AddObject方法,但它似乎不存在于Inno Setup / Pascal Script中。

2 个答案:

答案 0 :(得分:4)

不要施放,只需将其包裹在物体中。

 Type
     TMyObjectForStringList = class 
                                fCOMThingy : variant;   // or ole variant
                                constructor create(comthingy:variant); 
                               end;

  constructor TMyObjectForStringList.Create(comthingy:variant);
  begin
    fcomthingy:=comthingy;
  end;

 myStringList.addobject(astring,TMyObjectForStringList.Create(avariant));

不要忘记随后将其释放(Delphi的tstringlist缺少“释放所有”功能)

答案 1 :(得分:2)

Delphi的TStrings类确实有AddObject方法,但似乎是Inno的PascalScript TStrings包装器doesn't。但是,您应该可以这样设置:

  Index := Strings.Add('text');
  Strings.Objects[Index] := TObject(xxx);