0

Inno Setupを使用して、アプリケーションのインストーラーを作成しています。現在、コンボボックス(TNewComboBox)に現在のマシンのIISインストール上のWebサイトの名前を入力しています。今、私が本当にやりたいのは、COMオブジェクトを文字列と一緒にコンボのobjectsプロパティに格納することですが、COMオブジェクトをTObject(xxx)呼び出しでラップする場合でも、型の不一致エラーが発生し続けます。

他の場所で、TStringsオブジェクトにAddObjectメソッドが必要であると読みましたが、Inno Setup /PascalScriptには存在しないようです。

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 に答える