0

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

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

4

2 回答 2

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 缺少“释放所有”功能)

于 2010-07-02T12:37:16.263 回答
2

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

  Index := Strings.Add('text');
  Strings.Objects[Index] := TObject(xxx);
于 2010-07-02T11:12:57.253 回答