Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Например переменной, клики мыши, нажатие клавиш, изменение главного окна, буфеа обмена и т.д. Как Петр уже делал, раскладки клавиатуры... Т.е плагин разного мониторинга определенных действий.
- Думаю что могу осилить ( уверен) - только не совсем понятно - зачем? в любом практически плагине есть подпрограмммы. мониторить переменные - тоже как то странно - можно это прописать сразу в NeoBook'e. Вообще наверное всё можно описать в переменной и её мониторить - т.е. всё сводится к монитору каой-то(каких то) переменной? ( изменение времени [Time], размеров объектов, буфера ) - объясни поподробнее цель такого мониторинга - ведь всё это можно заложить сразу на стадии проектирования.. Интересное предложение- но цель невижу..Может что то недопонимаю...
Ну вот смотри, ниже создал проект, что бы тебе не изобретать... Нужен плагин NeoBookDBPro. Добавь несколько строк с разными значениями.
Монитор переменной. При навигации по таблице переменные изменяются. Есть штатная возможность подключить подпрограмму которая будет автоматически выполняться каждый раз, когда таблица обновляется или изменяется номер текущей записи. Но мне к примеру не нужно что бы подпрограмма выполнялась каждый раз, а только в тот момент, когда были внесены изменения. Для этого мне просто нужно мониторить переменную Base.Таблица1.$State.
Там есть три состояния переменной Browse, Insert, Edit. И например мне нужно выполнить подпрограмму только в том случае, если переменная примет значение Edit. Штатная же будет выполняться постоянно.
Если пользоваться штатной подпрограммой, то могут возникнуть определенные проблемы. Какие именно, я сейчас не вспомню. Ну как вариант, предположим что пользователь просто сидит и клацает в раздумьях по разным записям с интервалом доли секунды. Итог может быть не предсказуем.
Монитор переменной очень часто нужен (во всяком случае такому как я) при работе с различными плагинами. Где и когда конкретно, могу только привести пример когда вернусь к работе с программой. Сейчас пока просто действительно нет времени.
Монитор мыши Петр делал в своем плагине монитор мыши. Вообще без него практически никуда (если делаешь что то более менее серьезное). Но есть проблема с глобальным монитором, особенно в супер осях. Если будет один специализированный плагин мониторинга, то эта возможность там просто обязательна быть, как и все остальные перечисленные в предыдущем сообщении.
По поводу таймеров Можно создать одну универсальную команду. которая сможет создавать таймеры работающие где то там, за пределами программы на уровне системы. По принципу команды If, IfEx...
То есть запускается определенный таймер с указанным условием, если условие выполняется, то запустить подпрограмму.
Например: Если значение\переменная такая то равна\не равна\больше\меньше и т.д. такому то значению\переменной, то выполнить подпрограмму.
Зачем это надо и чем не устраивает таймер? 1. При работающем таймере не удобно отслеживать действия в отладчике. 2. Штатный таймер "рвет" выполнение основного кода, а если их несколько (таймеров), то основной код может вообще не выполнится. Или выполнится тогда, когда он уже вообще как бы и не нужен. В итоге получаем ошибки, проблемы и т.д.
Могу такое написать. в раздумьях по поводу создания нескольких таймеров - может всё же лучше на один повесить - и делать обработку в одном - нагрузка уменьшается чем тарабанить будут несколько..
Монитор переменных - ессли значение изменилось, если значение равно заданному Монитор мыши - если мышь на форме, если мышь вне формы,прав\лев клики Монитор объектов - изменил положение,изменил размеры (цвет и прочее в мониторе переменных) Монитор клавиатуры - (фактически клавиатурный шпиён - если нажал что то - и это што то равно(не равно) ) монитор окна(формы) - изменил положение,свёрнут и т.д. -
Примерно навскидку - может ещё что то добавится.. По поводу таймеров - возможно создавать несколько по категории монитора? Покеа не решил...
надо поробовать для начала с переменными (самое простое) - далее видно будет..
Монитор мыши - если мышь на форме, если мышь вне формы,прав\лев клики
координаты относительно окна (рабочей области), относительно экрана. Правый левый клик, нажата отпущена.
ЦитатаAS3856 ()
в раздумьях по поводу создания нескольких таймеров - может всё же лучше на один повесить - и делать обработку в одном - нагрузка уменьшается чем тарабанить будут несколько..
Тебе виднее, но как один будет обрабатывать несколько вариантов если понадобится?
ЦитатаAS3856 ()
надо поробовать для начала с переменными (самое простое) - далее видно будет..
Тебе виднее, но как один будет обрабатывать несколько вариантов если понадобится?
невижу проблем - условия - и обработка ( хотя может это сейчас не вижу - а там появятся..) Начну писать .....
Добавлено (16 Марта 2018, 22:57) --------------------------------------------- тут другая проблема - проверяем допустим переменную (глобальную NeoBook'a) [Time], таймер барабанит ну хотя б 500мс, время допустим подошло контрольное - срабатывает подпрограмма типа переменная равна искомым данным - и так каждые 500мс т.е. идёт повтор выполнения подпрограммы... - пока не изменится время или не будет команды стоп..
Сообщение отредактировано AS3856 - Пт, 16 Марта 2018, 23:04
AS3856, ты заглядывай в штатные объекты, команды. Там подсказки в открытом виде. Добавить параметры: Остановить после одного срабатывания...
То же самое и с запуском....
В необук уже все годами продумано. Достаточно брать готовое оттуда и добавлять что то новое, свое.
Для переменной да, скорей всего будет достаточно одного срабатывания, а в подпрограмме, если нужно, запускать таймер по новой.
Хотя к примеру если переменная изменилась, нужно воспроизвести к примеру какой нибудь сигнал "окошко моргает", или "объект моргает", тогда к примеру можно указать количество срабатываний таймера. Но это не обязательно. Основное это монитор, а повтор можно выполнять в подпрограмме.
И все же я думаю что в плагине нужен параметр "остановить после одного срабатывания, или продолжать молотить дальше". Так как в той же подпрограмме можно изменить переменную и ждать когда по таймеру она снова определится. То есть у пользователя должен быть выбор. Не хочешь читать хелп?
Добавлено (16 Марта 2018, 23:43) --------------------------------------------- только я хотел чтоб мониторило сразу несколько разных позиций - ну наверно можно и это решить..
только я хотел чтоб мониторило сразу несколько разных позиций
Нужно посмотреть что именно ты хочешь, а после тогда пообсуждаем.
Лично я склоняюсь что нужен отдельный таймер для каждой задачи. Не думаю что их (таймеров) может в одном проекте потребоваться слишком много. Хотя... Как знать, как знать.
Добавлено (17 Марта 2018, 01:03) --------------------------------------------- тут тоже много продумать надо - переменныен то разные бываю.. - иразный мониторинг нужен, если числа(дробные - целые) - сравнение больше меньше равно. больше или равно меньше или равно если строка - тоже смотреть что и как - изменения всякие возможны
Добавлено (17 Марта 2018, 01:06) --------------------------------------------- а главное всё это оформить в окне помощника кода....
Добавлено (17 Марта 2018, 02:02) --------------------------------------------- наверно не стоит так глубоко копать с разными типами данных - сравнивать строки и всё - иначе весь паскаль придётся переписывать
а главное всё это оформить в окне помощника кода....
Тут мудрить нечего - все просто.
ЦитатаAS3856 ()
весь паскаль придётся переписывать
Не придется - и тут все просто.
Однако, в целом замутили вы, джентльмены, что-то, гм... грандиозное.... Даже вникать страшно, честное слово!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
так я с заделом на будущее - если мониторить не только переменные, но и что то другое(читай выше) - тут придётся подумать как всё уместить и расписать чтоб понятно было пользователю -( да и самому) если есть какие то идеи на эту тему - готов послушать как оформить это всё...
А идеи все давно придуманы и озвучены - делай по примеру и подобию NeoBookDBPro, т.е. пара "свойство=значение". За основу редактора параметра можно взять стандартный компонент ValueEditor, но только "в чистом виде" пользоваться им будет весьма неудобно, и потому нужна доработка. Можешь подсмотреть у эсперальты сам принцип организации, но у него сделано, как обычно, через ж.... (применен, и причем коряво, ValueEditor в чистом виде). В плагине zmVLC тоже применен ValueEditor, но там я писал собственный компонент, взяв за основу штатный, а переделать (или вообще полностью свой нашлепать) можно как угодно - это же Delphi!
В общем, поупражняться тебе будет в чем.... Если, конечно, захочешь сделать хороший плагин, а не отмазку "и так сойдет".
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
делай по примеру и подобию NeoBookDBPro, т.е. пара "свойство=значение".
кажется мне тут посложнее будет... вот примерно навскидку... берём переменную --> String or Integer or Real String --> изменилось значение(любое) or изменилось на заданное integer or Real --> стало меньше, стало больше, просто изменилось, достигло определённого значения
если б просто записывать данные в таблицу - то да стандартный компонент ValueEditor (или ListView - плохо изучил пока..) пока в раздумьях..
А при чем тут Real или Integer? В действительности ("технически") в NeoBook есть только ОДИН тип данных - string, и редактируешь ты только его. Это потом, в реальной работе, если потребуется, начинаются всякие преобразования, но РЕДАКТИРУЕШЬ в окне помощника ты всегда string. И сравнивать (отслеживать момент наступления события) надо тоже всегда string. В необушных переменных, которые ты собрался мониторить, тоже ВСЕГДА будет только string, и все, что требуется - сравнить две строки. Единственное, что полезно будет организовать - сравнивать строки БЕЗ учета регистра, но это тоже элементарно делается штатными делфийскими средствами.
Если же тебе нужно прямо в плагине отслеживать "больше/меньше", то тоже нет проблем - преобразуй строку в Integer или в Single (Floatl, и сравнивай. Это уже в реальной работе, а в редакторе (не важно ValueEditir или просто Edit), ты всегда редактируешь string. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
AS3856, какой раз уже замечаю, слишком пытаешься глубоко капнУть не в том месте. Мышление конечно у каждого свое, но попытаюсь подсказать, попробуй всегда сначала попытаться упростить задачу. Типа как с уравнениями, сначала упрощаем, отсеиваем все лишнее, а после решаем.
Может быть тебе попробовать понять что такое блок схема? Может быть с ней будет легче?
mishem, блок - схемы изучил давно просто хотел на стадии проектирования разложить всё "по полкам" - видимо придётся раскладывать внутри плагина - дополниительно обработку писать...
просто хотел на стадии проектирования разложить всё "по полкам"
Это все придет, так сказать, "в процессе", поскольку вариантов - тьма. К примеру, я до сих пор не могу выработать окончательную систему обработки ошибок - каждый раз приходит в голову что-то новое. По мере накопления опыта и знаний выработаешь свои "схемы" и "системы", а советы тут давать сложно (да и, как показывает опыт, все-равно ты им не последуешь).
Delphi - это язык (хоть и формальный), и каждый "писатель" пишет свои "произведения" по-своему, у каждого собственный стиль. Как Толстой, Пушкин, Достоевский....
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Не совсем... Толстой - на Delphi, Пушкин - на С++, а Достоевский - на Си
Но, с формальной точки зрения (учитывая ход мыслей программиста), вопрос задан логично.
На программерскую сообразительность:: Жена программиста отправляет его в магазин за продуктами, и пишет памятку: "Купи батон колбасы, а если будут яйца, то купи десяток" Вопрос: что принес домой программист?
Только не подглядывать в сети!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Если же тебе нужно прямо в плагине отслеживать "больше/меньше", то тоже нет проблем - преобразуй строку в Integer или в Single (Floatl, и сравнивай.
Пётр - я это прекрасно погимаю - но сначала надо определить в строке цифры или проосто строка - вот и хотел на стадии проектирования это прописать, чтобы пользователь сам написал - а не плагин определял что там в строке находится... ладно - бросил затею - буду в плагине определять что находится в строке... ( но это менее удобно),т.к. для сравнения в этом случае низя уже писать больше\меньше и равно какому то Integer - следовательно придётся отсекать это если пользователь задумает это ввести(т.е. увеличивается код плагина, увеличивается обработка.. возможно в секции EXCEPT дописать(переписать)( E : Exception )
Это уже головная боль пользователя, что он там сравнивать будет. Глупо сравнивать текст с цифрой, по этому думаю даже никому в голову не придет.
mishem, подскажи - эта функция может определить что число 26 меньше чем число 62 ?
Добавлено (18 Марта 2018, 03:08) --------------------------------------------- ,а также дробные числа в строковом выражении..
Добавлено (18 Марта 2018, 03:10) --------------------------------------------- Мне то вот пришло в голову.. такое там написать - почему ж другим непридёт..
Так мне это неведомо, я никогла это не пробовал, знаю что сравнивает строки - и всё дальше не вдавался в подробности. Охватить сразу всё невозможно , и запомнить тоже . учусь...
вот и хотел на стадии проектирования это прописать, чтобы пользователь сам написал - а не плагин определял что там в строке находится...
На стадии проектирования это совсем необязательно, а вот в реальной работе (тестирование или готовый проект) это делать потребуется по-любому, и не только число или строка, а вообще на все, что требуется плагину для нормальной работы команды (а это уже зависит от того, что именно делает команда и как все плагине организовано). Я не раз подчеркивал, что плагин это - целая комплексная программа, а не просто набор "прямолинейных" функций, и потому сделать действительно толковый плагин ощутимо сложнее, чем кажется на первый взгляд. Порой обработка ошибок команды может потребовать кодирования в разы больше, чем сам по себе рабочий код функции.
Вспомним-ка какой фурор, в свое время, произвела команда плагина гарика по приданию прозрачности окнам - восторга у местных необукеров было выше крыши, а там всего-то одна строчка кода - стандартная функция Windows API, в которую и требовалось-то просто подставить идентификатор окна и цвет прозрачности. .
Цитатаmishem ()
Это уже головная боль пользователя,
Верно. NB тоже не проверяет оперативно синтаксис (плохо это или хорошо вопрос спорный), но отладчик отследит ошибку, правда только когда будет обращение к этой команде с ошибкой в параметрах.
Цитатаmishem ()
Все что тебе надо
В принципе, да. Но этого маловато будет. Как минимум, понадобится это. И не только.... Короче, берем и изучаем функции модуля SysUtils, и вообще всю "материальную часть" Delphi по парсингу строк, преобразованию типов. Если какой-то функции будет не хватать, то ничто не мешает нашлепать ее самостоятельно.
Цитатаmishem ()
Я думаю да, или нет?
ЦитатаAS3856 ()
Так мне это неведомо
Нет. Сначала надо преобразовать строку в число (или в тот тип, с которым сравнивается), а потом уже сравнивать. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
На стадии проектирования это совсем необязательно, а вот в реальной работе (тестирование или готовый проект) это делать потребуется по-любому
И делать это можно тоже по-разному: либо по-нормальному, либо - через ж....
Все это настолько очевидные вещи, что даже как-то странно их обсуждать. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
И делать это можно тоже по-разному: либо по-нормальному, либо - через ж....
Думаю что можно сделать и на стадии проектирования , и обработкой при выполнении команд плагина( второй способ проще, уменьшает процент ложного ввода данных - конечно он удобнее. По нему и пошёл. Пишу по образцу как в плагине DB - дальше видно будет..собственно - нетороплюсь...ошибки потом лень править..
Думаю что можно сделать и на стадии проектирования
Я бы не стал... Хотя... если есть время и желание, то... Не забудь только учесть, что в параметре, например, пользователь может указать переменную....
ЦитатаAS3856 ()
обработкой при выполнении команд
Это нужно делать по-любасу!
ЦитатаAS3856 ()
второй способ проще,
Это какой такой "Второй способ"?
ЦитатаAS3856 ()
нетороплюсь
А это мудро!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться