Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.30;
Скачать: CL | DM;

Вниз

Использование Microsoft ScriptControl   Найти похожие ветки 

 
Дмитрий_А   (2006-03-23 09:02) [0]

Господа, подскажите, как правильно пользоваться MS Script Control.
На VBScript написана функция

Sub OutError(s1, s2)
 s2="New Value"
End Sub


Пытаюсь через MS Script Control передать в нее параметры и получить измененные значения.
Передавать получается, а вот получить измененные - нет.
Привожу код ниже:

var
Script : IScriptControl;  
v : OleVariant;
vaResult : OleVariant;
P : PSafeArray;
begin
 Script := CreateOleObject("MSScriptControl.ScriptControl") as IScriptControl;
 Script.Language:="VBScript";
 Script.UseSafeSubset:=False;
 Script.AddCode(Memo1.Lines.Text);
   v := VarArrayCreate([0, 1], varVariant);
   v[0] := "1111";
   v[1] := "2222";
   P:= PSafeArray(TVarData(v).VArray);
   vaResult := Script.Run("OutError", P);

  ShowMessage(v[1]); // Вот тут старое значение "2222", а не "New Value" !!!!

 Script := nil;
end;


Подскажите, что делаю не так.


 
Сергей М. ©   (2006-03-23 09:17) [1]


> Дмитрий_А  


Чем функция-то не угодила ?


procedure TForm1.Button1Click(Sender: TObject);
var
Script : OleVariant;
vaResult : OleVariant;
P : PSafeArray;
begin
Script := CreateOleObject("MSScriptControl.ScriptControl");
Script.Language:="VBScript";
Script.UseSafeSubset:=False;
Script.AddCode(Memo1.Lines.Text);
  v := VarArrayCreate([0, 0], varVariant);
  v[0] := "1111";
//   v[1] := "2222";
  P:= PSafeArray(TVarData(v).VArray);
  vaResult := Script.Run("OutError", v);

 ShowMessage(vaResult);
Script := Null
end;


 
Сергей М. ©   (2006-03-23 09:19) [2]

Function OutError(s1)
OutError = "OutErrorResult " + s1
End Function


 
Сергей М. ©   (2006-03-23 09:19) [3]

Вот так еще проще:

procedure TForm1.Button1Click(Sender: TObject);
var
 Script, vaResult : OleVariant;
begin
Script := CreateOleObject("MSScriptControl.ScriptControl");
Script.Language:="VBScript";
Script.UseSafeSubset:=False;
Script.AddCode(Memo1.Lines.Text);
vaResult := Script.Run("OutError", "1111");
ShowMessage(vaResult);
Script := Null;
end;


 
Дмитрий_А   (2006-03-23 09:29) [4]

2 Сергей М. ©   (23.03.06 09:19) [3]

Спасибо конечно ...

НО.
Интересует именно входной-выходной параметр процедуры(или функции), а НЕ возвращаемое значение функции.

Вопрос в силе.


 
Сергей М. ©   (2006-03-23 09:36) [5]


> Дмитрий_А   (23.03.06 09:29) [4]


Не получится.


 
Дмитрий_А   (2006-03-23 10:29) [6]

2 Сергей М. ©   (23.03.06 09:36) [5]
Не получится.

Это точно?


 
Сергей М. ©   (2006-03-23 11:04) [7]


> Дмитрий_А   (23.03.06 10:29) [6]


Ну это же не VB, где параметры можно передавать по ссылке ..



Страницы: 1 вся ветка

Текущий архив: 2006.04.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
2-1145010184
_Iton_
2006-04-14 14:23
2006.04.30
TreeView


2-1145002346
KyRo
2006-04-14 12:12
2006.04.30
Проблемы с реестром


3-1141722439
Sergey Ivanov
2006-03-07 12:07
2006.04.30
Уникальный ключ позволяет добавить дублирующиеся значения


2-1145030740
GeoNew
2006-04-14 20:05
2006.04.30
Запуск приложения


2-1145184896
Std
2006-04-16 14:54
2006.04.30
обясните в чем ошибка :)