Форум: "Основная";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
ВнизНесколько проблем при использовании ScriptControl Найти похожие ветки
← →
AFROLOV (2002-08-27 15:23) [0]Код практически мало примним, просто я пытаюсь понять как это все работает.
текст скрипта 1:
Function Main
Dim A as long
Main =DateAdd("yyyy",1,Date)
End Function
текст скрипта 2:
Function Main
Main =DateAdd("yyyy",1,Date)
End Function
procedure TForm1.Button1Click(Sender: TObject);
var
dd:TDateTime;
par:SafeArray;
pPar:PSafeArray;
Language:String;
res:Variant;
begin
ScriptControl.Reset();
Language:="VBScript";
ScriptControl.Language:=Language;
ScriptControl.AddCode(Memo1.Text);//Тут выдается ошибка - "предпологается наличие окончания инструкции." если используется скрипт 1
pPar:=@par;
res:=ScriptControl.Run("Main",pPar);//здесь выдается ошибка - "Разрушительный Сбой" - верорятнее всего он связан с неверным использованием safeArray. до этого места программа доходит если использутся скрипт 2
dd:=res;
MessageBox(0,PChar(DateToStr(dd)),"",MB_OK);
end;
Подскажите как с этими проблемами бороться. Заранее спасибо.
← →
SEM (2002-08-27 16:16) [1]Что использовать SafeArray, необходимо выделить для него память. См. SafeArrayCreate.
← →
AFROLOV (2002-08-27 16:25) [2]C SafeArray проблему решил. Спасибо.
Но передать через него ничего не удается
Вот скрипт
Function Main (V)
"Main=DateAdd("yyyy",1,Date)
Main=V(0)
End Function
var
Language:String;
V:Variant;
P:PSafeArray;
res:Variant;
dd:String;
begin
ScriptControl.Reset();
Language:="VBScript";
ScriptControl.Language:=Language;
ScriptControl.AddCode(Memo1.Text);
V:=VarArrayCreate([0, 1], varVariant);
V[0]:="!";
V[1]:=1;
P:=PSafeArray(TVarData(V).VArray);
res:=ScriptControl.Run("Main", P);
dd:=res;
MessageBox(0,PChar(dd),"",MB_OK);
end;
И еще странно, что не удается функции заголовок нормальный сделать типа
Function F1 (Byref A as String) as Long
← →
SEM (2002-08-27 16:48) [3]SafeArray - это массив, где каждый элемент соответствует
одному параметру функции скрипта - Main.
Функция Main будет такой:
Function Main (a, b)
Main = a
End Function
Возвратить должна "!"
P.S. Точно не помню, давно делал, поэтому за правильность
не ручаюсь.
← →
AFROLOV (2002-08-27 17:13) [4]Спасибо. С параметрами разобрался.
Вот еще какая проблема:
Function Main (A,B)
for i=1 to 100
next i
"Main=DateAdd("yyyy",1,Date)
Main=A
End Function
ScriptControl.AddCode(Memo1.Text);//выдается ошибка - "предпологается наличие окончания инструкции.
Если выделенный цикл убрать то все хорошо. Создается такое впечатление, что скрипты длиннее 1 строчки полезного кода работать не хотят.:-(
← →
SEM (2002-08-27 17:22) [5]For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next
После "next" нужно убрать "i"
← →
AFROLOV (2002-08-27 17:37) [6]Да, отличается VbScript от VB. Спасибо.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c