Так а все, вся функция и есть чтение хмл, ну не считая пары строк, которые я указал.
Я только не пойму, че не так. У меня работает, к цируса(или цайрус, как там) тоже. Только у тебя...
DarkMaster
25.3.2016, 18:54
Дык если не работает в виде пары строк, то эти пару строк и надо смотреть. Смысл ковырять хмл, если проблемы возникают без него?
Как я могу понять, что проблема именно в них? Я лишь предположил. Сейчас соберу сборку без тех строк.
DarkMaster
25.3.2016, 18:58
Ну дык если есть шапка без полезного когда, которая должна просто инициализироваться, но она сыпет ошибку, то очевидно, что проблема в шапке, а не в полезном коде.
DarkMaster
25.3.2016, 19:24
закинул 0.3.4.1 на чужой комп вин7 64 - та же самая проблема.
Дурдом. Я не знаю, честно. И повторить не получается.
DarkMaster
25.3.2016, 19:33
в обрезке же получилось.
Ну, судя по обрезку, получается проблема в пилоте, что сомнительно.
DarkMaster
25.3.2016, 19:53
Учитывая, что плагины на плюсах гарантированно работают и есть образец плагина который тоже должен работать(как минимум работал), то это никак не пилот. В конце концов эта функция должна вернуть просто набор байтов в определенном порядке. В этом плане для отладки артмани хорошо помогает
Посмотри в хексе, что там идет. Структура то примитивная.
Так,если бы что-то не шло - не работало бы вообще. Полнофункциональная версия работает у меня без проблем(и не только у меня,на виндах начиная с хр).Т.е. по идее, код то не виноват. Обрезаная выбивает ошибку,хотя видимых причин нет. Вот и думай, что тут искать. Компилятор сменить если...
DarkMaster
25.3.2016, 20:13
еще тесты:
почти чистая виртуалка вин7 32 - ошибка.
засраная вин7 64 - запустилась.
Клянчу копию виртуалки тебе в доступ, чтобы воспроизвести смог.
Цитата
Т.е. по идее, код то не виноват.
Либо что-то компенсирует. Указатель кривой, например, где-то есть.
Имхо в любом случае надо начинать с создания рабочей шапки, а потом наращивать и смотреть.
как можно компенсировать кривые указатели?этож абсурд. Полный плагин работает,а пустая шапка нет. в моем случае. а в твоем...
DarkMaster
25.3.2016, 20:29
Цитата
как можно компенсировать кривые указатели?
Банально перезаписать некорректно выставленный '\0' в начале строки.
Цитата
а в твоем...
ни как он не работает.
Да и не мой он. Уже у 3 человек не запустилось.
Лично мои действия, которые бы я предпринял:
1) Обрезать код до минимального состояния на котором воспроизводится ошибка.
2) Помедетировать на код.
3) Посмотреть артманей структуру.
4) Взять образец плагина, скомпилить, посмотреть работает ли.
5) Взять образец плагина и потихоньку подсовывать куски текущего плагина и смотреть результат.
Хотя, честно сомневаюсь, что ты хуже меня понимаешь возможные шаги.
Кардинал у тебя 4 байта? Вопрос может показаться дебильным, но в с++ int может быть как 4, так и 8 байт, а кардинал это по сути unsigned int. Это кстати в свою очередь привело бы к 0 экспортируемых функций, что может вызвать ошибку.
да,4
про некорректный \0. по дефолту этот символ ты не обязан писать нигде. система сама вставит где нужно. в дельфовых строках она ставит его в конец.
DarkMaster
25.3.2016, 20:44
Цитата
ты имеешь ввиду работу со строками?
+
изменил свой пост,был не внимателен.
следовательно,если я не ставлю 0 в начало,а я и не ставлю,то все должно быть корректно.
DarkMaster
25.3.2016, 21:16
Виртуалку выдать?
DarkMaster
25.3.2016, 22:39
Виртуалку, где будет еррор воспроизводится. Человек домой минут через 40 придет и сможет дать виртуалку на которой сможешь воспроизвести проблему.
Так а на кой мне? Никаких полезных данных я не получу.
Ладно, пошел отдыхать. Завтра еще поломаю голову.
DarkMaster
25.3.2016, 23:45
Ну смотри. Было бы где тестить.
Проверил на втором компе, плагин работает. На обоих стоит Win7 x64. Пилот 2.36.1.
По моему я схожу с ума....
Сегодня имел :
3 ноутбука с виндами 8,8.1,10 соответственно.
1 мак с виртуалкой вин хр
стационар с вин 7 32х
еще один стационар с вин 7 64х
на каждом пересобрал плагин, начиная с пустой шапки и заканчивая полным функционалом. Добавлял все построчно. Абсолютно на всех и абсолютно все сборки работали. Просто запускались и без проблем. И да, сборка с шапкой фейлилась потому что я там выделение памяти под инитструкт затер.
DarkMaster
26.3.2016, 23:06
вот поэтому я и предлагал выделить тебе виртуалку, где ошибка воспроизводилась бы.
ты серьезно? ну не может же так быть ,что на стольких машинах работает, а на других нет?это как так?
DarkMaster
26.3.2016, 23:58
Ты думаешь, что я тебе вру что ли? В числе тестеров был zavas, если еще помнишь такого. Его виртуалку тебе и предлагали. Еще из вариантов - обновления винды, но тут очень сложно будет вычислить проблемный патч (имхо проще понять на что ругается и переписать).
Нет, не думаю) просто реально на издевку похоже. Дальнейшую беседу предлагаю перенести в лс, дабы не захламлять уж в конец тему.
Работа не заброшена) давит учеба. Скоро продолжу работу.
DarkMaster
6.4.2016, 7:04
это гут
С запуском плагина решился вопрос?
DarkMaster
6.4.2016, 11:21
Да. Мой косяк) В свою оправдание могу лишь сказать, что очень много факторов провоцировало на то, чтобы закинуть хмл в папку с плагинами...
Ну, первый, наверно, не лагающий релиз.
-Повысил стабильность работы раз в 40. Теперь плагин как и пилот, в теории, не валятся от неаккуратных действий.
-Добавил параметры в блок <SysInfo>в GUI.xml : <SafeMode>, <Warning>.
<SafeMode> - при отсутствии какого либо параметра или неправильного значения в нем автоматически применяет значение по дефолту.
Если установлено 1, то фича работает, 0 - будет выбивать ошибку при некорректном параметре, при этом прерывая обработку некоторых блоков полностью.
<Warnings> - работает только в сочетании с SafeMode = 1. Выводит предупреждения, о неправильных параметрах.
Перемудрил тут походу.
-Теперь функции при ошибке будут возвращать отрицательные значения. Расшифровка будет скоро.
-Поправил места потенциальных багов, в том числе связанных с возвращаемым результатом от GetAction.
Постарался оформить нормально. Если что не так - напишите.
---------------
В скором времени приведу в порядок описание и справку нормальную(надеюсь) прибью.
Нажмите для просмотра прикрепленного файла или
тут.
В связи с новой возможностью группировки функций по категориям появилась идея продублировать для каждого элемента все функции, тобиш вместо SetText будет SetButtonText и т.д. Основные плюсы :
1)Все функции элемента в отдельной вкладке.
2)Отпадет нужда указывать тип элемента в параметрах.
3)Специфичные функции для некоторых элементов будут во вкладке этого элемента.
Ну и минусы :
Полная или частичная потеря совместимости со старыми скриптами. Первый вариант - все функции будут переделаны под новый вид, и работать и экспортироваться будут во всех версиях одинаково. Второй вариант - экспортировать разные версии функций для разных пилотов, но это слишком накладно в плане дублирования кода и лишней путаницы. Да и новые функции под старый формат не охота переделывать.
Кто что думает?
Думаю, пока слишком не поздно перейти на новый формат.
Не вижу проблем для перехода.
Текущую версию плагина оставить без изменений. Те кто пользуются им сейчас,а таких немного судя по скачиваниям и дальше смогут его использовать, чтобы не переписывать скрипты. Пусть и без новых функций.
Новые версии плагина делать по-новому.
DarkMaster
9.5.2016, 18:14
Цитата
Текущую версию плагина оставить без изменений. Те кто пользуются им сейчас,а таких немного судя по скачиваниям и дальше смогут его использовать, чтобы не переписывать скрипты. Пусть и без новых функций.
Новые версии плагина делать по-новому.
+
Скорее всего будем переписываться с нуля.
DarkMaster
29.6.2016, 15:42
Причины? Переосмысление?
Ага, перфекционист во мне сидит. Да и костылей много. Охота все как надо сделать, а не через...
Ребят, подскажите чо как делать, я даже пример не могу заставить работать, может что не так делаю, пошагово дайте инструкцию как например сделать чтобы по нажатию на кнопку выполнялся "alarm" а дальше я как нить разберусь
Если архив взят отсюда
https://forum.uokit.com/index.php?s=&sh...st&p=220793, то:
Код
set %a GUI.GetAction ()
if %a [1 3] = Старт and %a [1 4] = BUTTON_CLICK // если сделан один клик по кнопке Старт
alarm
end_if
wait 100
Цитата(cirus @ 1.12.2016, 3:11)
Если архив взят отсюда
https://forum.uokit.com/index.php?s=&sh...st&p=220793, то:
Код
set %a GUI.GetAction ()
if %a [1 3] = Старт and %a [1 4] = BUTTON_CLICK // если сделан один клик по кнопке Старт
alarm
end_if
wait 100
Такс, спасибо большое, работает, а теперь вопросик, что значит [1 3] и [1 4]
Я немного понял, ну типа 1 - айдишник формы, а второе не понимаю наверное кнопка но где это указано и тд
Цитата
но где это указано и тд
Справки нет. Частично в первом посте написано, но там кое-что менялось, дорабатывалось, что-то может быть не актуально.
Цитата
а второе не понимаю наверное кнопка
Это имя кнопки, указанное в gui.xml
Код
<Name>Button</Name>
<Caption>Старт</Caption>
Т. е. в %a [1 2] вернёт Button, в %a [1 3] - Старт
GUI.GetAction () возвращает:
Код
1 - Имя формы
2 - Имя контрола
3 - Текст контрола
4 - Описание события
События:
Код
BUTTON_CLICK - Клик по кнопке
BUTTON_DBL_CLICK - Двойной клик по кнопке
TEXT_CLICK - Клик по тексту
EDIT_CHANGE - Если редактируется поле ввода
Цитата(cirus @ 2.12.2016, 3:10)
Справки нет. Частично в первом посте написано, но там кое-что менялось, дорабатывалось, что-то может быть не актуально.
Это имя кнопки, указанное в gui.xml
Код
<Name>Button</Name>
<Caption>Старт</Caption>
Т. е. в %a [1 2] вернёт Button, в %a [1 3] - Старт
GUI.GetAction () возвращает:
Код
1 - Имя формы
2 - Имя контрола
3 - Текст контрола
4 - Описание события
События:
Код
BUTTON_CLICK - Клик по кнопке
BUTTON_DBL_CLICK - Двойной клик по кнопке
TEXT_CLICK - Клик по тексту
EDIT_CHANGE - Если редактируется поле ввода
с этим разобрались, спасибо, я вчера эксперементировал и заметил что getaction захватывает только последний активный обжект, кнопка то или чек бокс, нельзя сделать чтобы можно было проверять сразу два едита на наличия правильного лога и пароля?
а то я конечно могу сделать поэапно но это геморно и куча кода лишнего, типа - "Введите логи.. проверка на логин, потом скрытие едита с логином и открытие едита с паролем, если пароль тоже ввели вено то скрытие едита с паролем и вывод кнопки после нажатия на которую открываются кнопки Старт и Стоп и тд" но это уж очень как то некрасиво хд
Можно просто получить текст из обоих edit.
Код
set $a GUI.GetText (*Edit* *Main* *edit*) // присвоить переменной текст из edit
set $b GUI.GetText (*Edit* *Main* *edit2*) // присвоить переменной текст из edit2
hint $a $b
wait 100
А как к примеру при клики по одной кнопке, изменить visible = другой
Код
set %a GUI.GetAction ()
if %a [1 3] = Старт and %a [1 4] = BUTTON_CLICK // если сделан один клик по кнопке Старт
set $a GUI.Enable (*Button* *Main* *Button2* *0*) // 0 - выключить, 1 - включить
end_if
wait 100
При нажатии на кнопку Старт кнопка Стоп станет не активна.
Спасибо!
Пытался по этому же принципу скрыть кнопку не получилось...
set %a GUI.GetAction ()
if %a [1 3] = Старт and %a [1 4] = BUTTON_CLICK // если сделан один клик по кнопке Старт
set $a GUI.Visible (*Button* *Main* *Button2* *0*) // 0 - выключить, 1 - включить
end_if
Цитата
GUI.Visible
Потому что такой команды нет.
То есть, кликнув по одной кнопки, изменить свойство Visible у другой кнопки нет возможности?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.