Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.09;
Скачать: CL | DM;

Вниз

Несколько проблем при использовании 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-27110
Юрий Зотов
2002-08-28 16:38
2002.09.09
Не работают точки останова в DLL


1-26963
dolea
2002-08-29 13:30
2002.09.09
ПРОВЕРКА НАЛИЧИЯ ДИСКЕТЫ В ДИСКОВОДЕ


3-26853
RDA
2002-08-17 16:39
2002.09.09
Отображение значения поля.


3-26892
Sergey L.
2002-08-20 09:48
2002.09.09
Помогите в создании отчета


1-26984
Фагот
2002-08-29 12:17
2002.09.09
QuickReport