В рубрике #Раритет 🙂 авторская разработка 2002 года
Внешняя компонента для 1С 7.7, реализующая функции для работы с таймером, генератором случайных чисел и захвата клавиатуры (обработка нажатий клавиш).
Реализованные функции штатно отсутствуют в 1С, и могут использоваться при необходимости в каких-либо алгоритмах на встроенном языке, в специализированных обработчиках, и для написания игр на 1С. Для чего собственно она и была разработана, ради спортивного интереса.
Разработана по технологии создания внешних компонент 1С в целях её изучения. Для интересующихся имеются исходники внешней компоненты на Delphi.
Для использования файлы Game.dll и Game.als поместить в каталог 1Cv77/BIN и зарегистрировать компоненту в системе командой "regsvr32 game.dll"
Пример использования:
ЗагрузитьВнешнююКомпоненту("Game.dll");
Game = СоздатьОбъект("AddIn.Game");
//найти случайный объект в списке объектов
СлучайныйОбъект = СписокОбъектов.НайтиЗначение(Game.Random(СписокОбъектов.РазмерСписка()));
Архив содержит файл справки для синтаксис помощника Game.als
Описание внешней компоненты Game.dll
Объект: "AddIn.Game"
Атрибуты:
— ИнтервалТаймера / TimerInterval
Число — интервал таймера в милисекундах
Методы:
— ВключитьТаймер() / StartTimer()
После включения таймера в 1С поступают
с заданным интервалом события.
Событие: см. ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
Источник — "Game"
Событие — "Timer"
Данные — строка с текущим временем в формате "ЧЧ.ММ.СС"
— ВыключитьТаймер() / StopTimer()
— ВключитьЗахватКлавиатуры() / StartKeyHook()
После включения захвата клавиатуры в 1С поступают по нажатию клавиш события.
Событие: см. ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
Источник — "Game"
Событие — "KeyDown"
Данные — список значений в строке с разделителями:
1) Virtual-key code (ASCII код)
2) ASCII символ
3) Scan code (Скэн код клавиатуры)
4) Количество повторений при удержании клавиши нажатой, обычно 1
5) Флаг нажатия клавиши расширенной клавиатуры: 1 — да, 0 — нет
6) Флаг предыдущего состояния клавиши: 1 — нажата, 0 — отжата
— ВыключитьЗахватКлавиатуры() / StopKeyHook()
— СлучайноеЧисло(ПределСлучайныхЧисел) / Random(RandomRange)
Если Предел равен 0, то возвращает строку со случайным числом Х, лежащим в диапазоне 0 <= X < 1
Иначе возвращает строку с целым случайным числом X, лежащим в диапазоне 0 <= X < Предел