Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
8-27128
hoaxer
2002-05-06 10:47
2002.09.09
alpha transparence


6-27139
Alexeyk
2002-07-04 06:23
2002.09.09
Как закачать часть HTML страницы из Интернет?


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


14-27234
AL2002
2002-08-14 11:31
2002.09.09
Зашёл на торри нет


1-27039
Поляничев Евгений
2002-08-27 20:31
2002.09.09
Перевод вещественного числа в строку





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