Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Hello, World!
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  16:13[Войти] | [Зарегистрироваться]

Обсуждение материала
Используем Active Script: шаг за шагом.
Полный текст материала


Другие публикации автора: Дмитрий Акуличев

Цитата или краткий комментарий:

«... Технология Active Script предоставляет простой способ оснаcтить любое приложение поддержкой сценариев (scripts). ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

  Содержит полезные и(или) интересные сведения
[1]28100%
 
  Ничего особенно нового и интересного
[2]00%
 
  Написано неверно (обязательно укажите почему)
[3]00%
 
Всего проголосовали: 28

Оценка стиля изложения

  Все понятно, материал читается легко
[1]2392%
 
  Есть неясности в изложении
[2]28%
 
  Непонятно написано, трудно читается
[3]00%
 
Всего проголосовали: 25




Смотрите также материалы по темам:
[Библиотеки типов] [Использование Active Script]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 42

09-03-2010 07:25
Ещё вопрос, как установить в переменную скрипта переменную IDispatch?
так выдаёт ошибку "Недопустимое число параметров"

procedure SetDispPropMS(const Obj:IDispatch;PropId:integer;const Value:IDispatch);
var
//  Index: integer;
//  V:TVar;
  VarValue: OleVariant;
  Params: DISPPARAMS;
  DispID: TDispID;
const
  IID_NULL: TGUID = '{00000000-0000-0000-0000-000000000000}';

begin
//  V := FVarList[Index];
  VarValue := Value;
  DispID := DISPID_PROPERTYPUT;
  Params.rgvarg := @VarValue;
  Params.rgdispidNamedArgs := @DispID;
  Params.cArgs := 1;
  Params.cNamedArgs := 1;
  OleCheck( Obj.Invoke(PropId, IID_NULL, GetSystemDefaultLCID, DISPATCH_PROPERTYPUT, Params, nil, nil, nil) );
end;




18-07-2006 08:45
Уважаемый Дмитрий!

Если можно, ответьте мне на вопрос:


В модуле activescp.pas можно увидеть:

const
  SID_IActiveScript =  '{BB1A2AE1-A4F9-11cf-8F20-00805F2CD064}';
  SID_IActiveScriptSite = '{DB01A1E3-A42B-11cf-8F20-00805F2CD064}';



  IActiveScriptSite = interface(IUnknown)
    [SID_IActiveScript]


  IActiveScript = interface(IUnknown)
    [SID_IActiveScript]


При этом все работает... А ведь это два основных интерфейса (можно было бы списать, что один никогда не вызывется)
Каким образом? ;)


29-03-2006 23:49
Статью ничетал.
Одно знаю точно, технология обязана жить и развиватся,
т. к. у меня уйма личного софта обработки станционных репортажей АМТС-ок.

Что бы там халявщики не кричали MS - рулезз...


27-04-2005 08:35
>>>отжирание виртуальной памяти при использовании >>>Active Script

Наблюдается действительно …., но тут не нужно грешить на менеджер памяти Delphi или кривость самого Active Script, а надо просто  заглянуть в исходники и освободить все неиспользуемые ссылки на объекты и вся память к вам вернется :)



20-11-2003 06:14
Извиняюсь что не подписал прошлое сообщение (о пошаговой отладке). Как то проглядел.

С ув. Babay


20-11-2003 06:11
Здравствуйте уважаемый Акуличев Дмитрий.
Хотелось бы спросить, а как заставить выполняться скрипт по шагам?
Т.е. хотелось бы что бы человек пишущий скрипт имел возможность его пошаговой отладки, просмотра текущего состояния перемнных и т.д все что вообще возможно по этому поводу.

P.S. к тому же помнится Вы обещали продолжение статьи (или у меня что то с памятью?). Очень интересно.

Спасибо за ответ.
Сообщение не подписано


12-09-2003 16:48
Сделал по статье подключение скриптов. Создал свой объект, к которому может обращаться скрипт. В языках JavaScript и VBScript все работает на ура. В PerlScript же ничего не происходит. Использую инсталляцию ActiveState. Не можете подсказать, в чем может быть проблема?


22-08-2003 17:00
Спасибо за ответ!!!

По поводу первого вопроса я так и думал. Но попробовав (работаю с VB)
CreateObject("Parser.TrxMemoryData") (где Parser - имя проекта в Delphi, а TrxMemoryData - имя объекта обертки) ничего не вышло - выдается ошибка: "Невозможно создание объекта контейнером ActiveX: 'Parser.TrxMemoryData'". Если можно пример использования CreateObject на примере кнопки из статьи - TestButton.

По поводу второго вопроса: а как в методе передать полученную ссылку на интерфейс как объект к исходному методу класса для которого делалась обертка?

Заранее благодарен!


21-08-2003 23:34
сообщение от автора материала
ivan 21.07.2003 13:35:36
______________________________

Так как же все-таки назначить контролу оброботчик события из скрипта? Если использовать VBScript, нормально, а из JScript ничего не получается!
Например, для кнопки Button я пробовал писать
Button.OnClick= new Function("текст"); - не проходит. Также не
помогает описать в скрипте функцию
function Button.OnClick()
{
//нужные действия
}
Хотя доступ до свойств Button я имею.


Вы невнимательно читаете предыдущие ответы.
Синтаксис постоянных обработчиков для JScript -- ответ 14.01.2003 11:12:02
Пример создания свойств-событий, позволяющих использовать Function в JScript и GetRef в VBScript -- ответ 23.01.2003 13:54:00

_____________________________________________________________________________________



vad 07.08.2003 17:48:00
______________________________

Для автора.
Давно исрользую данную технологию.(скриптовый компонент и из палитры включаю в проект);
Вопрос:
OLE-оболочка для VCL-объекта в Вашей статье требует создания COM-обьекта и следовательно его регистрации в реестре, что не очень хорошо.Как от этого избавиться ?(чтобы не было регистрации в реестре)
Можноли это сделать в RUN-time;


А какие предубеждения против регистрации? Для юзера процесс совершенно прозрачный, регистрация происходит автоматически при первом запуске приложения. Удаление регистрационной информации тоже просто -- достаточно запустить приложение с ключом

/unregserver

.
Кроме того, это самый простой способ создания довольно сложных объектов-оболочек. Судите сами: типовой объект-оболочка содержит десяток-другой методов и свойств, требует реализации позднего связывания (через IDispatch), а для поддержки событий ещё и информации о типах.
Ну да ладно. Спрашивали -- отвечаем.

Вариант первый.
Для реализации automation-объектов в качестве базового использовать класс

TAutoIntfObject

. Этот класс предназначен для реализации automation-объектов без фабрики класса, и, следовательно, без регистрации ко-классов. Однако, для реализации

IDispatch

потребуется библиотека типов. Для обработки событий потребуется, так же, реализация

IConnectionPointContainer

(можно содрать из болванки, создаваемой мастером Automation Object). Библиотека типов пригодится и для получения

ITypeInfo

для регистрации named items.
Библиотеку типов загружать функцией

LoadTypeLibrary{Ex}



Вариант второй. Экстремальный.
Реализовать

IDispatch

и

ITypeInfo

вручную.

_____________________________________________________________________________________



Jenya 21.08.2003 17:50:31
______________________________

Очень хорошая статья!
Спасибо автору, продолжать в том же духе.

Но по ходу изучения появились вопросики:
1)Каким образом можно создавать динамичеси из скрипта экземпляры объектов реализованные в программе (при наличии на них OLE-оберток)?

2)Как передать в методе интерфеса объекта не стандартное значение(типа Integer, String и т.д.) а другой объект? (например: есть обертка на компонент порожденный от TDataSet и нужно этот компонент передать в качестве параметра метода интерфейса другого компонента. Как это сделать не пойму. Пробовал как ссылку на интерфейс но выдается ошибка!!!).

Заранее благодарен.


1) Либо вызовом методов других объектов, которые будут возвращать ссылки на новые объекты, либо создавая их в коде скрипта как внешние ActiveX объекты (Функция CreateObject в VBScript или класс ActiveXObject в JScript).

2) Как ссылку на интерфейс и передавать. К сожалению, без текста кода сказать что-то более определённое нельзя (не надо постить код сюда. можно мылом)


21-08-2003 17:50
Очень хорошая статья!
Спасибо автору, продолжать в том же духе.

Но по ходу изучения появились вопросики:
1)Каким образом можно создавать динамичеси из скрипта экземпляры объектов реализованные в программе (при наличии на них OLE-оберток)?

2)Как передать в методе интерфеса объекта не стандартное значение(типа Integer, String и т.д.) а другой объект? (например: есть обертка на компонент порожденный от TDataSet и нужно этот компонент передать в качестве параметра метода интерфейса другого компонента. Как это сделать не пойму. Пробовал как ссылку на интерфейс но выдается ошибка!!!).

Заранее благодарен.


07-08-2003 17:48
Для автора.
Давно исрользую данную технологию.(скриптовый компонент и из палитры включаю в проект);
Вопрос:
OLE-оболочка для VCL-объекта в Вашей статье требует создания COM-обьекта и следовательно его регистрации в реестре, что не очень хорошо.Как от этого избавиться ?(чтобы не было регистрации в реестре)
Можноли это сделать в RUN-time;


21-07-2003 13:35
Так как же все-таки назначить контролу оброботчик события из скрипта? Если использовать VBScript, нормально, а из JScript ничего не получается!
Например, для кнопки Button я пробовал писать
Button.OnClick= new Function("текст"); - не проходит. Также не
помогает описать в скрипте функцию
function Button.OnClick()
{
//нужные действия
}
Хотя доступ до свойств Button я имею.


16-07-2003 11:31
сообщение от автора материала
14.07.2003 13:13:00
Материал актуален.Не могли бы прислать ссылку на использование сомпо-
нента ADO в Active Script.
Лукьянчиков Ю


Компоненты ADO доступны как внешняя библиотека COM-объектов. Доступ к ним из скрипта осуществляется так же как и к любым другим COM-обектам: функция CreateObject в VB Script, класс ActiveXObject в Java Script, или создание объектов хостом и передача интерфесов в скрипт (методы передачи значений рассмотрены).

Информацию же по работе с самими компонентами ADO следует искать в документации Microsoft, ибо это выходит за рамки рассматриваемого материала.
Эта документация либо включена в MSDN, либо доступна отдельно в составе MDAC SDK.
MDAC SDK можно свободно скачать с сайта Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyID=cf5bf48d-9bbb-4ca2-9b03-4ee000db37ff&DisplayLang=en


16-07-2003 11:10
сообщение от автора материала
14.07.2003 15:10:45
aserov


Да, интересная проблемка...
Только при более внимательном анализе выявились совсем уж неприятные вещи.

Во-первых, скрипт здесь совершенно ни при чём. Расстановка контрольных точек в конструкторах/деструкторах COM-объектов показывает совершенно ожидаемое поведение.

Во-вторых, рост объёма запрошенной у системы памяти наблюдается и без всякого использования скрипта и COM. Достаточно просто нерегулярной работы со строками и объектами. Есть предположение, что это особенность менеджера кучи Дельфи, который при близком к чисто случайному (а именно так и происходит при интенсивной работе со строками и мелкими объектами) потоку запросов на выделение/освобождение сталкивается с сильной фрагментацией.
В пользу этого говорит, например, факт быстрого "насыщения" (когда объём запрошенной памяти перестаёт расти) при выполнении склоь угодно сложных операций (много строковых выражений, создание/удаление большого числа экземпляров) в цикле.

Собираюсь проверить свои предположения, используя тестовый менеджер памяти (разумеется, написанный на основе стандартного и использующий в точности те же алгоритмы) с визуализацией состояния кучи.
Думаю, что после ответа на вопрос "Кто виноват?" можно будет подумать и над тем, "Что делать?".

Было бы неплохо, если б Вы прислали исходный код проекта, вызывающий подозрения (только пожалуйста, без использования сторонних компонентов).


14-07-2003 15:10
Зравстуйте!!! Никто не сталкивался с проблемой отжирания виртуальной памяти при использовании Active Script. Использую в своем проекте компонет
TDCScripter при частом вызове методов компонента, которые исполняют скрипт, виртуальная память стремительно отжирается и не отдается назад..
Так на 10000 вызовов занимается около 70 Мг. Если кто то сталкивался с такой проблемой и сумел ее победить Просьба помочь. (сразу говорю что проблема не в проекте так как эта хитрая особенность Active Script была проверена отдельно и с использованием различного кода (не только от Dream Co))


14-07-2003 13:13
Материал актуален.Не могли бы прислать ссылку на использование сомпо-
нента ADO в Active Script.


30-04-2003 20:15
сообщение от автора материала
>>>К стати не подскажите где взять документацию на VBScript?

По интерфейсам -- приложена к статье (.hlp)
По самому языку -- в MSDN, либо скачать с Microsoft
http://www.microsoft.com/downloads/details.aspx?FamilyID=01592c48-207d-4be1-8a76-1c4099d7bbb9&DisplayLang=en


30-04-2003 11:55
Блин КЛАССНО!!! одним словом.
Давно ищу такую штуку. У меня прграммный комплекс содержит свой скриптовый язык (сам писал), но он заточен под определенную конкретику. Ко всему прочему я самоучка в программировании (основная специальность автоматизыция оборудования) и потянуть серьёзный язык просто не в силах. А тута такая мощь VB. Надо еще статьи ОБЯЗАТЕЛЬНО! Особенно по части разработки оболочек компонетов VCL. Меня лично особо интерисут StringGrid, DbGrid, ADO.... и т.д.
Короче просто отпад. Все сажусь срочно разбираться. Рекомендую ВСЕМ.

А насчет заточки под VB. Так VB это родная технология мелкософта вот по тому и все ок. А ява ... ну вобщем вы поняли.

К стати не подскажите где взять документацию на VBScript?


11-03-2003 04:35
И еще.
Для VB функция MsgBox работает.
А для JS alert не идет.
Как-то уж все однобоко заточено для VB.


11-03-2003 04:18
>>>Button.OnClick = new Function("тело функции")
а вот эта щтука работать отказывается.
Cannot assign to a function result
Вот так вот.
Если можно пример.


11-03-2003 04:15
>>>Button.OnClick = new Function("тело функции")
а вот эта щтука работать отказывается.
Если можно пример.


14-02-2003 19:29
Я имел ввиду "Хочу порекомендовать" :).


14-02-2003 19:29
Хочу также взглянуть на возможность встраивания в свои приложения работы со скриптовым языком Python
http://membres.lycos.fr/marat/delphi/python.htm
Реализовано в виде VCL. Условие - на машине должен быть установлен Python.


23-01-2003 13:54
сообщение от автора материала
>>>23.01.2003 12:17:14 Андрей

Да, можно.
Васиковская GetRef возвращает ссылку на IDispatch, сам метод имеет DISPID = 0 (DISPID_VALUE).

К COM-объекту надо добавить свойство OnClick с типом IDispatch.
Для вызова метода можно сделать очень хитрый финт ушами

IOnClickEvent = dispinterface
  ["{00020400-0000-0000-C000-000000000046}"] // Обязательно такой!
  procedure OnClick; dispid DISPID_VALUE;
end;

TButtonWrapper = class(TAutoObject, IButton)
...
  FOnClick: IOnClickEvent;
...
  // метод доступа к св-ву OnClick сгенерирован мастером
  procedure Set_OnClick(const Value: IDispatch);
...
  // это обработчик VCL кнопки
  procedure ButtonClick(Sender: TObject);
end

procedure TButtonWrapper.Set_OnClick(const Value: IDispatch);
begin
  IDispatch(FOnClick) := Value;
end;

procedure TButtonWrapper.ButtonClick(Sender: TObject);
begin
  // а вот о формировании параметров и вызове
  // Invoke пусть компилер думает, он умный!
  if Assigned(FOnClick) then FOnClick.OnClick;
end;

Вот так вот. В VBScript почти дельфийские события. Да, и не забывайте, что это будет механизм, параллельный обычному механизму COM-событий (тех что через IConnectionPoint).

PS
А в JScript можно использовать тот изврат, что всё -- объекты, даже функции. Вот что получится вместо VB-шного GetRef

Button.OnClick = new Function("тело функции")


23-01-2003 12:17
Доброго времени суток!
Вопрос к автору:
  Можно ли установливать обработчики для обёрточных объектов в VBS ?

Например:

sub Click
  " Script code
end sub

Button.OnClick := GetRef("Click")


17-01-2003 11:15
сообщение от автора материала
>>> Egor 1/14/2003 11:58:23 AM

JScript не поддерживает свойства по умолчанию.

Для объекта Button в примере свойство Caption является свойством по умолчанию.

Семантика языков VBScript и JScript разная.

В VBScript различаются скалярные типы и ссылки на объекты, и есть две формы оператора присваивания: для сылок (Set <obj>=<exp>) и для скалярных значений (<var>=<exp>). Если при использовании скалярной формы оператора присваивания выражение (или левая часть) будет иметь объектный тип, интерпретатор будет стараться разрешить объектную ссылку до скалярного значения, используя свойства по умолчанию (DISPID для свойств по умолчанию фиксирован), причем этот процесс может быть рекурсивным, если значением свойства, в свою очередь, тоже является объект. Если в конце цепочки не получится получить скалярное значение, сгенерируется ошибка. Все это относится и к "полноценному" VB.

В JScript в принципе отсутсвуют скалярные значения. Все значения (как и в полноценной Java) -- объекты. Например для такого кода:

REM VBScript
Dim X
X = 1234

// JScript
var X
X = 1234

в случае VBScript в окне DispatchForm для переменной X Вы увидите тип VT_I4 (целое 4 байта), а в случае JScript -- VT_DISPATCH (объект).

Если взглянуть на обработчик кнопки Set в DispatchForm, то видно, что Invoke вызывается с флагом DISPATCH_PROPERTYPUT, что соответствует скалярной форме оператора присваивания. Движок VBScript пытается разрешить ссылку до скаляра, а JScript -- нет. Вместо этого он пытается изменить тип объекта (с Object на String), а так как эта переменная не его (создана хостом), то обламывается. А вот для переменной X (см. выше) движок бы просто изменил тип.

PS
Вообще-то VB лучше заточен под OLE Automation (или OLE под VB?). Использование таких вещей как свойства по умолчанию или енумератор для коллекций (оператор For Each ... In ...) может заметно увеличить производительность больших скриптов.


14-01-2003 11:58
Спасибо за ответ.
Пример как создать обертку для стандартных VCL был приведен в статье. Я думаю, что каждый желающий сможет сам написать то, что ему необходимо.
Конечно, если у кого-то уже есть готовые, то можно и поделиться, но это уже второстепенное.
Хочу задать еще вопрос.
Переделал я пример, данный в статье и находящийся в Step6, под JavaScript (мне так роднее).
Получилось:

// Button "OnClick" event handler
function Button::OnClick(){
  Debug.Print(Button.Caption);
}

// Startup code
Debug.Print(Button.Caption);
Button.Caption = "Click me!"
---------------------------
Все работает. Вызваю TDispatchForm. Устанавливаю  переменной Button значение, например, qwert.
Делаю Set и получаю ошибку OLE error 800A1390.
Если скрипт на VB, то такого нет.
Спасибо.


14-01-2003 11:12
сообщение от автора материала
Доброго времени суток! Спасибо, что не забываете ;)

Сначала отвечу на "горячие" вопросы

>>>Egor
Про COM-обертки Вы все правильно поняли.
Обработчики событий:
В отличие от VBScript, где используется соглашение о наименовании

Sub Object_EventName
...
End Sub

в JScript используется близкий к C++ синтаксис

function Object::EventName()
{
...
}

Согласен, этот мелкий, но важный момент в статье обойден.

Продолжение или новая статья.
Лично мне хотелось бы выложить что-нибудь более интересное, чем просто библиотеку оберток для стандартных VCL, к примеру, отладчик. Эту информацию нужно собрать и систематизировать.
Так что чем больше будет вопросов (можно прямо в е-мыло), тем быстрее появится продолжение, и тем больше будет его наполнение.


14-01-2003 09:36
Еще раз спасибо за статью, а особенно за ответ. Всегда приятно, когда автор сам разбирается в том что пишит.
1. Я так и предполагал, что для того чтобы динамически создавать VCL объекты, надо заранее заготовить COM-обертки для этих объектов.
Определить какие понадобятся (хоть все) и заготовить COM-обертки.
Скрипт нечего не сможет сделать с вашими объектами если у них(у объектов) не будет, так называемого, COM-доступа. Я правильно понял?

2. >>> Может быть имеет смысл выпустить продолжение, где рассмотреть дополнительные вопросы, к примеру, использование внешних функций, обертки для стандарных VCL компонентов, некоторые специфические объекты, такие как коллекции в стиле VB?
Я думаю стоит. И желательно с хорошими(подробными) примерами. Лучше один раз прочитать, чем десять раз попробовать "методом тыка".
А еще я считаю надо всетаки хорошо знать JavaScript или VBScript.
Как я понял автор не полохо разбирается в VBScript.
Может стоит давать примеры для двух языков?
Как, например определить onClick для кнопки (см. статью) в JavaScript.
Спасибо.


14-01-2003 05:46
Еще раз спасибо за статью, а особенно за ответ. Всегда приятно, когда автор сам разбирается в том что пишит.
1. Я так и предполагал, что для того чтобы динамически создавать VCL объекты, надо заранее заготовить COM-обертки для этих объектов.
Определить какие понадобятся (хоть все) и заготовить COM-обертки.
Скрипт нечего не сможет сделать с вашими объектами если у них(у объектов) не будет, так называемого, COM-доступа. Я правильно понял?

2. >>> Может быть имеет смысл выпустить продолжение, где рассмотреть дополнительные вопросы, к примеру, использование внешних функций, обертки для стандарных VCL компонентов, некоторые специфические объекты, такие как коллекции в стиле VB?
Я думаю стоит. И желательно с хорошими(подробными) примерами. Лучше один раз прочитать, чем десять раз попробовать "методом тыка".
А еще я считаю надо всетаки хорошо знать JavaScript или VBScript.
Как я понял автор не полохо разбирается в VBScript.
Может стоит давать примеры для двух языков?
Как, например определить onClick для кнопки (см. статью) в JavaScript.
Спасибо.


13-01-2003 22:23
Дмитрий, я би тоже бил рад увидеть продолжение. Если вам не трудно - напишите пожалйста.
Сообщение не подписано


13-01-2003 16:52
В первую очередь хочется поблагодарить автора за статью.

Во вторых, как один из заинтересованных, очень надеюсь на продолжение данной темы.

Заранее спасибо.

P.S. Особенно интересует использование коллекций


10-01-2003 15:00
сообщение от автора материала
Я рад, что статья вызвала интерес, даже появились некоторые вопросы. Обязательно буду заглядывать на эту страничку и отвечать по мере накопления вопросов.

>>>Насколько технология актуальна сейчас?
Ну, DHTML странички Internet Explorer-ом все смотрят ;) Так что помирать, вроде как не собирается.

>>>Нет ли примеров создания контролов на лету ?
Если я правильно понял вопрос, то именно "на лету" все объекты для сценария и создаются.
Добавлять объекты в пространство имен сценария можно в любой последовательности, так же и код сценария можно добавлять по частям.
Или имелась в виду возможность делать доступным сценарию любой VCL объект по желанию?
Была такая задумка. Остановило лишь то, что RTTI для VCL объектов предоставляет информацию только о published-членах класса. Так что COM-обертки для объектов придется готовить заранее, полноценная универсальная оберка для любого VCL-объекта не получится.

>>>Кто-нибудь занимался созданием отладчиков для ActiveX скриптов
Очень скудная информация. Даже MSDN при поиске по именам интерфейсов дает какие-то обрывки.
Самому очень интересно. Как соберется достаточно информации, будет новая статья. Буду благодарен за любые ссылки.

>>>...не задумываясь о наличии Active Script и уж тем более о его версиях.
Все компоненты Active Script входят в поставку ОС и браузера, кроме того, доступны на сайте Microsoft.
http://msdn.microsoft.com/scripting
С версиями не будет проблем при использовании символических ProgID для создания экземпляров (см. статью, модуль Scripts). Набор поддерживаемых интерфейсов тоже совместим снизу-вверх (основное требование COM)

>>>В IPS возможно использование своих функций, а в скриптовой машине как я понимаю, только определенного набора
Речь идет о глобальных функциях, как я понял? Возможность использовать внешние функции есть.
Способ первый.
Добавить глобальный объект вызовом IActiveScript.AddNamedItem с указанием флага SCRIPTITEM_GLOBALMEMBERS. Все методы объекта будут доступны как глобальные функции, а свойства -- как глобальные переменные
Способ второй.
Добавить библиотеку типов вызовом IActiveScript.AddTypeLib. В библиотеке типов можно описать точки входа во внешней DLL.

>>>Как мне из скрипта добраться до TStringGrid.Cell?
Написать COM-обертку для класса TStringGrid.


Вопрос ко всем заинтересованным.
Может быть имеет смысл выпустить продолжение, где рассмотреть дополнительные вопросы, к примеру, использование внешних функций, обертки для стандарных VCL компонентов, некоторые специфические объекты, такие как коллекции в стиле VB?

Спасибо за внимание.


10-01-2003 12:35
4. Да, и совсем забыл. В IPS возможно использование своих функций, а в скриптовой машине как я понимаю, только определенного набора. Пример - мне надо в скрипте вычислить некое значение, опираясь на данные, скажем, в TStringGrid. Как мне из скрипта добраться до TStringGrid.Cell?


10-01-2003 11:59
Позвольте, господа, добавить несколько слов.
1. Главное достоинство IPS - он может использовать результат компиляции текста. То есть загрузил текст, скомпилировал и пользуйся. А Script технологии - они все-таки интерпретаторы. Хоть сейчас и быстрые машины, но у нас, к примеру, и о первых Pentium может идти речь как о платформе эксплуатации программ.
2. IPS компилируется в программу. Никаких внешних средств нет. Например, мне начальник дает задание написать программу с ипользованием скрипта так, чтобы можно было просто взять exe, прийти с дискетой на другую машину и спокойно пользоваться, не задумываясь о наличии Active Script и уж тем более о его версиях.
3. Кстати, различные версии могут стать причиной офигенной головной боли - достаточно посмотреть на ADO.

А так все интересно. Спасибо автору.


10-01-2003 09:06
Хороший компонент, реализующий эту технологию есть у Dream Company (http://www.dream-com.com/scripter.html) и кроме VBS и JS там введен еще DelphiScript, существует возможность подключать PerlScript, PythonScript. Также можно посмотреть готовую среду “Script Builder“ http://www.skbkontur.ru/sb/, реализованную с помощью этого компонента.
С некоторой стороны затронута эта тема в статьях “Использование Microsoft ScriptControl” (http://www.nkfi.ru/doc/prog/delphi076.html) и “Delphi и COM” (http://www.compress.ru/Article.asp?id=1053) автор Анатолий Тенцер.

И напоследок посоветую всем, кто интересуется этой темой почитать вот это: “САГА О ПРОГРАММИСТАХ-КУДЕСНИКАХ” (http://www.delphikingdom.com/cranberry/saga.htm).


10-01-2003 09:01
Хороший компонент, реализующий эту технологию есть у Dream Company (http://www.dream-com.com/scripter.html) и кроме VBS и JS там введен еще DelphiScript, существует возможность подключать PerlScript, PythonScript. Также можно посмотреть готовую среду “Script Builder“ http://www.skbkontur.ru/sb/, реализованную с помощью этого компонента.
С некоторой стороны затронута эта тема в статьях “Использование Microsoft ScriptControl” (http://www.nkfi.ru/doc/prog/delphi076.html) и “Delphi и COM” (http://www.compress.ru/Article.asp?id=1053) автор Анатолий Тенцер.

И напоследок посоветую всем, кто интересуется этой темой почитать вот это: “САГА О ПРОГРАММИСТАХ-КУДЕСНИКАХ” (http://www.delphikingdom.com/cranberry/saga.htm).


10-01-2003 09:00
Интересная статья. Подмечены тонкие моменты с созданием событий и default свойствами.
Вопрос ко всем:
Кто-нибудь занимался созданием отладчиков для ActiveX скриптов. Ведь есть же в этой технологии соответствующие интерфейсы и т.д.


10-01-2003 04:54
Статья отличная.
Пробовала я внедрять Innerfuse Pascal Script, но мне не понравилось.
Что-то конечно можно, но довольно ограниченно. Да и хелпа хорошего я не нашла.
Возможно я изменю свое мнение. если кто-нибудь покажет мне нормальное приложение. Поддерживается ли например там наследование ?
Но это уже другая тема.
Что касается данной статьи, то все "Ок!".
Вопрос к автору. Нет ли примеров создания контролов на лету ?
Например, добавить кнопочку, описать ей соответсвующие поведение и т.п.


10-01-2003 04:43
To Nicolay Vasiliev
>>>Но не проще было бы использовать для таких целей Innerfuse Pascal Script
Ты считаешь, что эта бадяга проще?
Насколько развит JScript, VBScript настолько ущербный IPS.
Можно ли сделать с помощью IPS то, что описано в статье?
Это мое мнение. Возможно, все не так уж и плохо.


10-01-2003 02:29
Доброго времени суток!

Я очень извиняюсь и ничего не имею против описанной технологии. Но не проще было бы использовать для таких целей Innerfuse Pascal Script (http://www.carlo-kok.com/ifps.php)?


09-01-2003 13:14
Вопрос:
Насколько технология актуальна сейчас? Лет ведь ей много.
Вместо реализации самому можно воспользоваться MS ActiveScriptControl.

В реальной жизни оказывается что стороние скриптователи, снабженные какой-никакой средой разработки скриптов - лучше. И вообще, предложила ли фирма микрософт к этом смысле новую технологию со времен 1997 года, когда это объявилось?


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Однажды, в студеную зимнюю пору я из лесу вышел, был сильный ЧТО?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

Оценка содержания
 
Содержит полезные и(или) интересные сведения
 
Ничего особенно нового и интересного
 
Написано неверно (обязательно укажите почему)


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования