Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

JavaScript-парсер: Встроить в asm/c

15K
18 апреля 2009 года
Vertecs
116 / / 21.06.2008
Задача простая: Встроить в собственную программу готовый парсер.
Например, разрабатывая собственную скриптовую оболочку, я посчитал глупым придумывать свой скриптовый язык и синтаксис, да и лень как-то...
Считаю резонным просто прилинковать dll к своей программе.

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

Нужна литература с примерами.
Как объявить внутренные ресурсы моей программы доступными в скриптах как объекты и свойства?
Как объявить некоторые функции моей программы доступными в скриптах?
То же касается и различных событий и т.п.

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

Спасибо!
3
18 апреля 2009 года
Green
4.8K / / 20.01.2000
Цитата: Vertecs

Например, разрабатывая собственную скриптовую оболочку, я посчитал глупым придумывать свой скриптовый язык и синтаксис


Правильный подход

Цитата: Vertecs

Нужна литература с примерами.
Как объявить внутренные ресурсы моей программы доступными в скриптах как объекты и свойства?
Как объявить некоторые функции моей программы доступными в скриптах?
То же касается и различных событий и т.п.


Гугли на тему IScriptControl, embedded jscript и т.п.
Например:
http://www.codeproject.com/KB/COM/scriptdemo.aspx
http://www.codeproject.com/KB/cpp/ScriptYourApps.aspx

15K
19 апреля 2009 года
Vertecs
116 / / 21.06.2008
С Пасхой!

Спасибо! Пример пашет, разбираюсь.
15K
21 апреля 2009 года
Vertecs
116 / / 21.06.2008
Что-то много непонятностей и отгугливается скудное количество чепухи...

Например:
Если среди аргументов функции в скрипте имеется new Array, то rgvarg[n].vt получается VT_DISPATCH, а не VT_ARRAY, как мною ожидалось. И выгуглить эту ситуацию не могу...

Теперь ожидаю, что меня ждёт достаточное количество подобных ситуаций.

Написал простейщий пример. Функция Line в скрипте строит GDI-линию, если указаны одни координаты. Если же указан текст, то выводит его по линии координат. А вот Array-таки никак не могу одолеть.

Появилось очень много вопросов. Можете ли посоветовать форум нужного профиля, где могут помочь или весомый ресурс доходчивой документации по построению скриптовых интерфейсов.

Среди вопросов имеются такие:
Как можно предоставить возможность в js-скрипте поддержку new Bitmap, new Brush, new Pen? Опыт работы с такими объектами есть. Проблема лишь в том, как имено в скрипте адекватно обрабатывать такое?

Спасибо за совет и помощь!
5
21 апреля 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Vertecs
Что-то много непонятностей и отгугливается скудное количество чепухи...

Можеть быть попробовать альтернативу? Например Lua. Да и Python тоже можно в таких целях использовать.

15K
21 апреля 2009 года
Vertecs
116 / / 21.06.2008
Цитата: hardcase
Можеть быть попробовать альтернативу? Например Lua. Да и Python тоже можно в таких целях использовать.

Питон? Хм, ну, я сталкивался с ним. Сетевой язык по-моему?
Вообще, cgi-скрипты очень сложные и не думаю, что питон мне понравится.
Ява-скрипт - самый распространённый и простой. По-крайней мере, для меня js и php - дружелюбная среда для разработок.

И самый БОЛЬШОЙ ПЛЮС js - никакой отдельной библиотеки не надо подключать! Всё в системе имеется и в Си все классы и типы описаны.
А Питон или Луа - это куча отдельных dll lib h hpp и т.д. А меня это не привлекает. Я библиотеки Bass и Fmod вынужденно использую. А так, люблю довольствоваться только стандартным!

Спасибо!

15K
22 апреля 2009 года
Vertecs
116 / / 21.06.2008
Итак, чтобы не выглядить туниядцем, вот выловил
http://social.msdn.microsoft.com/Forums/ru-RU/ieextensiondevelopment/thread/6eed4449-f46d-440e-b164-5dec1f454475
для работы с элементами массивов...
Сейчас пытаюсь выгуглить обработку new Мой_объект...
14
22 апреля 2009 года
Phodopus
3.3K / / 19.06.2008
Цитата: Vertecs
А Питон или Луа - это куча отдельных dll lib h hpp и т.д. А меня это не привлекает. Я библиотеки Bass и Fmod вынужденно использую. А так, люблю довольствоваться только стандартным!


Это, действительно, так. Но библиотека (.dll) там всего одна, да и ее можно встроить в экзешник. Зато очевидное преимущество - возросшая переносимость. Я это, не агитирую, просто может кому еще интересно будет узнать :)

246
23 апреля 2009 года
GIZMO
1.8K / / 30.07.2004
Цитата: Vertecs

Среди вопросов имеются такие:
Как можно предоставить возможность в js-скрипте поддержку new Bitmap, new Brush, new Pen? Опыт работы с такими объектами есть. Проблема лишь в том, как имено в скрипте адекватно обрабатывать такое?

Спасибо за совет и помощь!


Метод IScriptControl::AddObject регистрирует объект в пространстве имен скрипта. Объект должен реализовывать IDispatch (в основном ф-ии GetIDsOfNames и Invoke) или иметь прокси который это делает. После этого можно обращаться к св-вам объектов из скрипта.

15K
24 апреля 2009 года
Vertecs
116 / / 21.06.2008
Цитата: GIZMO
Метод IScriptControl::AddObject регистрирует объект в пространстве имен скрипта. Объект должен реализовывать IDispatch (в основном ф-ии GetIDsOfNames и Invoke) или иметь прокси который это делает. После этого можно обращаться к св-вам объектов из скрипта.

Спасибо!
Но, у меня Visual Studio 6, версия в 100мб практически. Скачивал пять лет назад с DostLink. И никаких IScriptControl там не нашёл ни в каких файлах...

Сейчас вот гуглю и никак не найду толкового примера, чтобы функция возвращала хотя бы массив ( позиция мышки = UserAt.x и UserAt.y ), так-как мои функции возвращают лишь или числа, или строчки. А Dispatch непонятно как вернуть. Т.е. UserAt - функция, которая должна вернуть {x:<number>, y:<number>, key:<buttons>, etc...}

Нашёл в MSDN пример функции, компилится без проблем, но откуда вызывать её - ума не приложу...

246
24 апреля 2009 года
GIZMO
1.8K / / 30.07.2004
Цитата: Vertecs
Спасибо!
Но, у меня Visual Studio 6, версия в 100мб практически. Скачивал пять лет назад с DostLink. И никаких IScriptControl там не нашёл ни в каких файлах...


а его там и не должно быть, это ActiveX он должен быть в Винде. Чтобы получить возможность работы с СОМ-компонентом нужно импортнуть его библиотеку типов (в VC для этого используется директива #import, вроде...).

15K
27 апреля 2009 года
Vertecs
116 / / 21.06.2008
ндя-ааа...
Первое, что раздражает, интерфейс разрабатывался для Visual Basic... :(
Второе, за недельный труд и 20 часов головной боли (буквально) не сдвинулся ни на шаг.
Третье, интерфейс черезчур ...

Будто я сел в танк и читаю инструкцию:
Ход вперёд - потянуть на себя рычаги 1,3,5-9,14,17,25;
Ход назад - потянуть на себя рычаги 2,4,5-11,13-16,20;
Остальные комбинации запрещены!

Мораль: Чтобы сделать одну простую вещь, нужно произвести десять действий в строгой последовательности. Иные комбинации вызывают ошибку или исключение!!!

Кому в голову пришло такой интерфейс задумать? Неужели самому Биллу?
Я в давности собственный парсер-транслятор за 9 часов написал и отладил. А этот готовый скриптовый интерфейс неделю грызу... А в MSDN написаны примеры так, что нужно быть телепатом, чтобы догадаться, что имел автор в виду и откуда брал входные структуры.
Скачал пример функции я дня 4 назад, а только сегодня выгуглил, откуда брать ей указатель, чтобы вызвать.
И то оказалось, что пример реализует совсем не то, что я искал. Хотя и работает...
246
28 апреля 2009 года
GIZMO
1.8K / / 30.07.2004
дак выбери другой язык напр. JScript
//Language engine to use
set_Language(BSTR pbstrLanguage);
15K
28 апреля 2009 года
Vertecs
116 / / 21.06.2008
Цитата: GIZMO
дак выбери другой язык напр. JScript
//Language engine to use
set_Language(BSTR pbstrLanguage);

В смысле?
У меня Visual Studio 6. Программирую только в Си. Никаких Си++, MFC или билдеров. Всё на уровне API...
В примере у меня и так выбран JavaScript.

Проблема в том, что я не могу толком разобраться с самим COM-интерфейсом. И документация скудная. Я же говорю, даже не могу создать объект Mouse, обращение к которому возвращало результат {x:x_coord; y:y_coord} и т.д...

5
28 апреля 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Vertecs
В смысле?
У меня Visual Studio 6. Программирую только в Си. Никаких Си++, MFC или билдеров. Всё на уровне API...

Гмм, а как тогда с COM вы собираетесь работать? :confused:

15K
29 апреля 2009 года
Vertecs
116 / / 21.06.2008
Цитата: hardcase
Гмм, а как тогда с COM вы собираетесь работать? :confused:

Вы не так меня поняли.
Я программирую на Си, а не Си++. т.е. ща пока лень, да и в основном не нужно заниматься изучением ++. Некоторые конструкции я понимаю, просто сам не занимаюсь их описанием.

Когда начинал только-только переходить от DOS на Windows, пользовался Visual Basic 4. А когда потом стал осваивать среду через Си, то понял, что VB - такая гадость!!! Для старта он подходит. Но, он же способен изуродовать представление о среде системы...

Повторяю, что изучая что-нибудь, тупо впихиваю Си++ пример из гугла в свою прогу, но основную задачу пишу API-средствами.

Вот как только решил в оболочку своей утилиты интегрировать Java-скрипты, тут начались проблемы.

Утилита является микро-сервером. Решил я дать возможность самому пользователю наращивать функциональность утилиты посредством скриптов. Поначалу разрабатывал свой простой скриптовый язык и синтаксис. Но... Потом подумал "Что за идиотизм!?" и решил просто использовать всю мощь готового JS-парсера. Тем более, отдельной библиотеки не требуется и в Си все заголовки и структуры имеются...

Вот тут-то я понял, что за все 15 лет программирования я даже и не имею права называться программистом! Не могу взять старт! Никак...

5
29 апреля 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Vertecs
Не могу взять старт! Никак...

Я уже давал ссылку на Lua он существенно легче интегрируется в хост-приложение.

15K
30 апреля 2009 года
Vertecs
116 / / 21.06.2008
Цитата: hardcase
Я уже давал ссылку на Lua он существенно легче интегрируется в хост-приложение.

Не хочу обидеть, извеняюсь...
Но, какая разница, что я буду применять? JScript, VBScript, Lua или Logo с Алголом?
Интерфейс-то один: COM-Object со всякими Invoke и т.д...
Помоему, нужно сначала разобраться с самой логикой COM-интерфейса, а язык подключить можно одной строчкой... Не так ли? ;)

5
30 апреля 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Vertecs
Помоему, нужно сначала разобраться с самой логикой COM-интерфейса, а язык подключить можно одной строчкой... Не так ли? ;)

Как бы в случае с Lua это не так. Для затравки.

14
30 апреля 2009 года
Phodopus
3.3K / / 19.06.2008
Цитата: hardcase
Как бы в случае с Lua это не так. Для затравки.


И для продолжения: раз два (не смотрите на ++ после буквы C, это не обязательно) (рядом с там же - три)

15K
01 мая 2009 года
Vertecs
116 / / 21.06.2008
Цитата: hardcase
Как бы в случае с Lua это не так. Для затравки.

Цитата: Phodopus
И для продолжения: раз два (не смотрите на ++ после буквы C, это не обязательно) (рядом с там же - три)

Спасибо, ребята!

Кхм, однако, первое, что мне не нравится в ЛУА - синтаксис. Я люблю Си. Именно поэтому эту тему назвал "JavaScript-парсер ...", а не "VBScript-..." например.

Знаю, это можно отнести к маразму, но я помешан на Си-синтаксисе. Пусть местами он сложен, но он гибкий. И поэтому я изучал одно время php, а не cgi или perl. И очень жалею, что mIRC-скрипты не си-подобные.
Да, эта зацикленность на Си - как нацизм или рассизм. Не хорошо...
Но, просто, может быть мне... лень!? Осваивать новый язык, синтаксис, возможности...

Я и Си изучал по знаниям Паскаля, а Паскаль, в своё время, по знаниям Бейсика! :)
И, к сожалению, один лишь GWBasic DOS'овский знал в совершенстве. А вот Форт, Лого, Паскаль и, тем более, Си - без "шпаргалок" изредка путался. Особенно в Си.

Пишу на Си всего восьмой год и со стыдом отношу себя к программистам на Си. Недавно понял: Не знаю я этот Си. За все годы так и не узнал...

А тут предлагаете Луа... Время будет, конечно, посмотрю...

Спасибо!

3
01 мая 2009 года
Green
4.8K / / 20.01.2000
Посмотри на Squirrel:
http://ru.wikipedia.org/wiki/Squirrel

Хотя я бы все же попытался использовать JS, т.к. он уже есть в любой Windows.
15K
03 мая 2009 года
Vertecs
116 / / 21.06.2008
Цитата: Green
Посмотри на Squirrel:
http://ru.wikipedia.org/wiki/Squirrel

Хотя я бы все же попытался использовать JS, т.к. он уже есть в любой Windows.

Да, "Белочка" - просто находка! И скомпилилась без проблем (за искл. пары строчек, где я закомментил). И консоль понравилась.

Буду вот теперь пробовать её:)

Спасибо!

Хотя, JS - ещё в силе. Доку толковую надо. Ищу...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог