Конференция "Corba" » Как сделать доступным массив, определенный в Делфи, в VB скрипте? [Delphi, Windows]
 
  • sann-x © (14.01.10 12:48) [0]
    Есть поток (класс TThread). В нем будет выполняться VBScript (TScriptControl). Я хочу сделать видимым в скрипте массив, объявленный в потоке. Для этого создаю Automation Object. Но как передать в него массив из потока?
  • clickmaker © (14.01.10 13:35) [1]
    function Run(const ProcedureName: WideString; var Parameters: PSafeArray): OleVariant; ?
  • sann-x © (14.01.10 13:50) [2]
    Дело в том, что я хочу сделать доступ в скрипте к различным данным из потока через объект. Этот объект хочу внедрить в скрипт, чтобы можно было так:

     dim v
     v = MyObject.Vars("var1")
     v = v * 2
     MyObject.Vars("var1") = v


    В потоке есть массив из записей:

    type
    TVar = record
     Name: string;
     Value: string;
    end;
    TArrayVar = array of TVar;
    TMyThread = class (THread)
    private
     FVasr: TArrayVar;
     ...
    end;


    Таким образом, команда в скрипте v = MyObject.Vars("var1") получает значение (TVar.Value) переменной "var1" (TVar.Name). А команда MyObject.Vars("var1") = v устанавливает TVar.Value тому элементу массива, у которого TVar.Name равна "var1". Вот как это сделать?
  • Сергей М. © (21.01.10 09:48) [3]
    > как это сделать?

    Преобразуй дин.массив в safe-массив (F1 -> "SafeArrays") и передавай его в свой олей-автообъект через соотв.свойство или метод
  • sann-x © (22.01.10 20:54) [4]

    > Преобразуй дин.массив в safe-массив (F1 -> "SafeArrays")
    > и передавай его в свой олей-автообъект через соотв.свойство
    > или метод

    Ага, спасибо. Я уже так и делаю.
 
Конференция "Corba" » Как сделать доступным массив, определенный в Делфи, в VB скрипте? [Delphi, Windows]
Есть новые Нет новых   [134427   +34][b:0][p:0.001]