Главная страница
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.033 c
1-1143042397
CAHEK
2006-03-22 18:46
2006.04.30
Tlistview работа с имиджами


2-1144925760
костян
2006-04-13 14:56
2006.04.30
Господа программисты,проблема с DBGrid и MonthCalendar


2-1144982672
dwar
2006-04-14 06:44
2006.04.30
com порт, и DLL


4-1139327559
abakh
2006-02-07 18:52
2006.04.30
OleContainer


2-1145009844
KyRo
2006-04-14 14:17
2006.04.30
Запрос по дате