Главная страница
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.041 c
2-1144819651
Leshas
2006-04-12 09:27
2006.04.30
Обработка ошибок


2-1144932563
dera
2006-04-13 16:49
2006.04.30
Как решить проблему?


4-1139410159
Maverick
2006-02-08 17:49
2006.04.30
как узнать имя окна зная его handle?


15-1144614620
Zeqfreed
2006-04-10 00:30
2006.04.30
Что почитать о поиске вхождений по маске?


2-1144838707
@gent
2006-04-12 14:45
2006.04.30
Как залить сервис в сервисы ?