![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование Microsoft ScriptControl
Дмитрий_А © (2006-03-23 09:02:00)Господа, подскажите, как правильно пользоваться 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 11:04:00) [1]
> Дмитрий_А (23.03.06 10:29) [6]
Ну это же не VB, где параметры можно передавать по ссылке ..
Дмитрий_А (2006-03-23 10:29:00) [2]2 Сергей М. © (23.03.06 09:36) [5]
Не получится.
Это точно?
Сергей М. (2006-03-23 09:36:00) [3]
> Дмитрий_А (23.03.06 09:29) [4]
Не получится.
Дмитрий_А (2006-03-23 09:29:00) [4]2 Сергей М. © (23.03.06 09:19) [3]
Спасибо конечно ...
НО.
Интересует именно входной-выходной параметр процедуры(или функции), а НЕ возвращаемое значениефункции.
Вопрос в силе.
Сергей М. (2006-03-23 09:19:00) [5]Function OutError(s1)
OutError = "OutErrorResult " + s1
End Function
Сергей М. (2006-03-23 09:19:00) [6]Вот так еще проще:
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:17:00) [7]
> Дмитрий_А
Чем функция-то не угодила ?
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;