Главная страница
    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.018 c
2-1144905410
Student iz KZ
2006-04-13 09:16
2006.04.30
Как производть локализацию приложения с помощью...


2-1145007717
Ezorcist
2006-04-14 13:41
2006.04.30
Boolean и bool?


15-1144315906
Erik1
2006-04-06 13:31
2006.04.30
Где найти компонент для отображения TIFF формата с компресией?


2-1144815500
pavel_guzhanov
2006-04-12 08:18
2006.04.30
Как найти последний пробел в строке


3-1141656216
mvs
2006-03-06 17:43
2006.04.30
Экспорт данных из базы Interbase в скрипт средствами Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский