andrestudio писал(а):
что в коде который Вы выложили куда его приткнутьВ файле hiVBJScript.pas нужно заменить function TMe.GetIDsOfNames, а код, который выше, я исправил, чтобы с комментариями тоже работало.
Ответов: 2125
Рейтинг: 159
|
|||
andrestudio писал(а): что в коде который Вы выложили куда его приткнутьВ файле hiVBJScript.pas нужно заменить function TMe.GetIDsOfNames, а код, который выше, я исправил, чтобы с комментариями тоже работало. |
|||
карма: 1 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Nic писал(а): Уже давно, Dilma объяснял почему это так, помню что ничего не понял, но принял на веру, что так надо и больше вопросов не задавал. По поводу имен говорилось о том, что названия точек к мультиэлементам и их производным должны соответствовать нотации используемого компилятора(начинаться с буквы или _ и содержать только латиницу и цифры). Еще одним ограничением, распространяемым на имена точек всех элементов является то, что названия верхних и нижних не должны совпадать - это чревато проблемами не только компиляции, но и работы среды. Больше вроде нигде никаких ограничений не было... |
|||
карма: 27 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Dilma писал(а): Больше вроде нигде никаких ограничений не былоВ текущей реализации VBJScript точки в списке (events,data) должны быть отсортированы по возрастанию (отсюда и мнения, что они должны называться xxx1,xxx2,xxx3...). Просто TStrList.Find в КОЛе использует бинарный поиск. |
|||
карма: 1 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
tsdima писал(а): TStrList.Findага. Я только на момент рекодинга менеджера профилей элементов пакета обнаружил эту интересную особенность работы метода find. Это конечно исправлять надо. |
|||
карма: 27 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Nic, tsdima, подскажите как можно получить событие из скрипта если при использовании "обычной" функции VBScript "CreateObject" организовать обработку событий нельзя и соответственно такой код
Set TObject = WScript.CreateObject("WScript.Object", "TObject_") в компоненте не работает. Если ещё какие способы |
|||
карма: 4 |
|
Ответов: 2125
Рейтинг: 159
|
|||
andrestudio, если я правильно понял, нужно обработать событие, которое генерируется объектом, который был создан посредством стандартной функции CreateObject, так?
Кстати, WScript не пиши, это понятие существует только в windows script, т.е. при запуске файлов .wsh |
|||
карма: 1 |
|
Ответов: 5227
Рейтинг: 587
|
|||
tsdima, именно так, но не получается
пробовал в простом файле vbs CreateObject(<ProgID>,<Prefix>) не работает пока не обьявить так WScript.CreateObject(<ProgID>,<Prefix>) |
|||
карма: 4 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Если ты почитаешь документацию по windows script, то тебе станет ясно, зачем наряду с обычной (встроенной в движок скрипта) функцией CreateObject существует ещё и метод WScript.CreateObject. Главное его отличие как раз в том, что он позволяет организовать обработку событий. Объект WScript создаётся автоматически при обработке скрипта программой WScript.exe и это его системный объект, наподобие нашего sys. Но наш системный объект не содержит такой функции.
|
|||
карма: 1 |
|
Ответов: 5227
Рейтинг: 587
|
|||
tsdima, вот я как раз до этого сегодня дошёл и упёрся в стенку , посему и спросил в надежде что есть ещё какие нибудь способы сии мне не известные (так сказать обходные пути)
|
|||
карма: 4 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Обходных путей нет, нужно делать функцию sys.CreateObject с аналогичными параметрами, а это не один десяток строк. В принципе, особых сложностей нет, нечто аналогичное уже есть в UseActiveX (я имею ввиду класс, который получает события - TMyEventHandler), так что при наличии у меня свободного времени я скорее всего сделаю такую фичу.
|
|||
карма: 1 |
| ||
Голосовали: | andrestudio |
Ответов: 5227
Рейтинг: 587
|
|||
tsdima, да было бы очень замечательно. Много полезных скриптов где от WScript избавится не получается
|
|||
карма: 4 |
|
Ответов: 2125
Рейтинг: 159
|
|||
Блин, целый час, наверное, убил, пытаясь выяснить, почему при передаче объектов ошибка происходит
Оказывается их нужно для скрипта обёртывать Variant-ом и передавать этот Variant по ссылке. Уфф. Вобщем, я не уверен, что память везде освобождается, но оно работает! Если будут косяки, сразу сообщи. Короче - тестировать надо. |
|||
карма: 1 |
| ||
файлы: 1 | vbjscript_with_events.rar [6.4KB] [793] | ||
Голосовали: | andrestudio |
Ответов: 5227
Рейтинг: 587
|
|||
tsdima, заменил hiVBJScript.pas, пример работает.
Спасибо за поддержку. Появился вопрос. Чем отличается sys.CreateObject от CreateObject , я так понял этот метод позволяет таки получить события от обьекта. |
|||
карма: 4 |
|
Ответов: 2125
Рейтинг: 159
|
|||
andrestudio писал(а): Чем отличается sys.CreateObject от CreateObject CreateObject встроен в VBScript, т.е. это функция неотделима от языка. А sys.CreateObject - это моя функция, которую я добавил к объекту sys, и её параметры я обрабатываю сам, т.е. создать объект, приаттачить обработчик событий, реализовать этот обработчик, и т.п. Кстати, по поводу andrestudio писал(а): нужно склонить обьект принять стринг за имена переменныхЕсть в JavaScript такая фича:
|
|||
карма: 1 |
| ||
Голосовали: | andrestudio, Minkovsky |
Ответов: 5227
Рейтинг: 587
|
|||
запустил свой скрипт и вместо WScript.CreateObject вписал sys.CreateObject
как кричал кот в Простоквашино "УРА! ЗАРАБОТАЛО" Хоть ламбаду танцуй (жаль нет смайлика) ------------ Дoбавленo: Я тут колдовал с Include но нифига не получилось (сложно это пока для меня) а сейчас получается необходимость отпала в этом. Вобщем спасибо большое ещё раз. |
|||
карма: 4 |
|