Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];

Вниз

Использование 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
8-1132910552
avlan
2005-11-25 12:22
2006.04.30
Видео в формате WMV


2-1144820856
IntruderLab
2006-04-12 09:47
2006.04.30
DLL


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


15-1144472265
balepa
2006-04-08 08:57
2006.04.30
"Извлечение" мелодии из MP3


2-1145188039
АЮМ
2006-04-16 15:47
2006.04.30
сохранить в файл?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский