Как я могу сохранить COM-объект в свойстве Inno Setup TNewComboBox.Objects? - PullRequest
0 голосов
/ 02 июля 2010

Я использую Inno Setup, чтобы создать установщик для моего приложения.В настоящее время я заполняю поле со списком (TNewComboBox) именами веб-сайтов в установке IIS текущей машины.Теперь то, что я действительно хочу сделать, это сохранить COM-объект вместе со строкой в ​​свойстве objects объекта combo, но при этом получать ошибки несоответствия типов, даже если обернуть COM-объект в вызов TObject(xxx).

I 'В других местах мы читали, что у объекта TStrings должен быть метод AddObject, но его нет в Inno Setup / Pascal Script.

Ответы [ 2 ]

4 голосов
/ 02 июля 2010

Не кастуйте, просто оберните его в объект.

 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));

Не забудьте впоследствии освободить его (в списке tstring в Delphi отсутствует функция "освобождает все")

2 голосов
/ 02 июля 2010

Класс Delphi TStrings имеет метод AddObject, но кажется, что оболочка Inno PascalScript TStrings не .Тем не менее, вы должны иметь возможность установить его так:

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