Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Тип указателя мыши в exe неопределяет

Страниц (3): « 1 2 [3]
 

21. Scorp1978 - 28 Апреля, 2016 - 09:55:37 - перейти к сообщению
поставил СКАЙП. ПОМОГИТЕ!!!
22. Kibor - 28 Апреля, 2016 - 11:04:58 - перейти к сообщению
добавил
23. Scorp1978 - 29 Апреля, 2016 - 02:52:43 - перейти к сообщению
exe сформированный с галочкой в дальнейшем по проге некорректно отрабатывает функцию getcursor(x,y) и соответственно затем поиск курсоров невозможен, может все таки есть возможность подправить данный "косячек".
24. Adomb - 07 Февраля, 2019 - 13:12:17 - перейти к сообщению
Я писал в теме поиска текста про проблему вылета Кибора при обращении к readtext.
В функции такой код (это часть кода, нужные переменные объявлены)
CODE:
string Text[2]; char wer[25];
v: if(z<x)
{siz=0;
if(readtext (NUM | MARK, #Text[0], 14, 3, -1,-1,-1,#CT[0],-1, 5, 50, 522,234, 713,261, as)>0)
{for(n=0; n<2; n++){strcpy(#wer[siz], Text[n]); siz=size(#wer[0]);} deletetext(#wer[0], " " | "-" ); pz=formatsn(format(#wer[0]));}
N[z]=pz;
Npow[z2]=pz;
z=z+2;
z2++;;
sendmouse(LEFT, 380, 520, as); pause(rand(1100, 2000));
goto v;

К распознованию обращается несколько раз подряд.
Все косяки отловил, проблема в том, что в собранном exe не хочет работать. Первое обращение к readtext распознаёт, цифры правильно определяет, а при втором обращении exe вылетает.
В самом Киборе же работает исправно, также работает в собранном exe с загрузкой скрипта с сервера.
Exe пробовал собирать на двух компах. Вылетают именно на этом месте.
(Добавление)
Вобщем непонятно. Если добавить
CODE:
deletetext(#wer[0], "0 " | "1" | "2" | "3 " | "4" | "5" | "6 " | "7" | "8" | "9"); sleep(10);

то собранный exe начинает работать, если убрать - вылетает.
Повторю, в киборе работает без добавления.
(Добавление)
CODE:
string Text[2]; char wer[25];
v: if(z<x)
{siz=0; deletetext(#wer[0], "0 " | "1" | "2" | "3 " | "4" | "5" | "6 " | "7" | "8" | "9"); sleep(10);
if(readtext (NUM | MARK, #Text[0], 14, 3, -1,-1,-1,#CT[0],-1, 5, 50, 522,234, 713,261, as)>0)
{for(n=0; n<2; n++){strcpy(#wer[siz], Text[n]); siz=size(#wer[0]);} deletetext(#wer[0], " " | "-" ); pz=formatsn(format(#wer[0]));}
N[z]=pz;
Npow[z2]=pz;
z=z+2;
z2++;;
sendmouse(LEFT, 380, 520, as); pause(rand(1100, 2000));
goto v;
25. Zireael - 07 Февраля, 2019 - 17:15:53 - перейти к сообщению
 Цитата:
при втором обращении exe вылетает

99% это выход за пределы массива. Код не весь так что ничего определённого не сказать.
К примеру:
CODE:
N[z]=pz;
Npow[z2]=pz;
z=z+2;

Если объявлено N[2], то при первом обращении z будет 0, т. е. N[0] нормально, а при следующем z равно 2 и N[2] это уже ошибка.
26. Kibor - 08 Февраля, 2019 - 00:08:16 - перейти к сообщению
Что со скобками?
{ 3
} 2
27. Adomb - 08 Февраля, 2019 - 01:23:32 - перейти к сообщению
 Kibor пишет:
Что со скобками?
{ 3
} 2

Сюда не дописал скобку, в скрипте она есть.
Массивы инициализированы.
Скрипт большой, вынес эту часть с распознаванием в цикле в отдельный скрипт , собрал exe, без добавления
CODE:
deletetext(#wer[0], "0 " | "1" | "2" | "3 " | "4" | "5" | "6 " | "7" | "8" | "9"); sleep(10);

Заработало. Не вылетает. Всё, что в этой функции с другими функциями в скрипте не связано, не перекликается. Но хоть убей, полный скрипт в Киборе работает без deletetext, а в собранном exe вылетает. Сидел, уже от балды убрал в начале скрипта строку
CODE:
external(VOID, "mouse_event", "mouse_event", "user32.dll");

собрал ехе без deletetext и он заработал, перестал вылетать.
Вернул external - перестал работать. Вставил deletetext - опять заработал.
(Добавление)
Вобщем подитожу.
Вся эта катавасия, как оказалось была из-за немодального диалога.
Вернул на место external, убрал ненужный deletetext.
В начале скрипта создаётся диалог, убрал его, скрипт в exe заработал.
Вернул диалог, вставил команду после его отработки destroydialog(0) и собранный exe заработал.
В Киборе скрипт работает с неубитым диалогом. А exe вылетает.
Каким образом неубитый диалог повлиял на собранный exe непонятно. Exe работал с неубитым диалогом, но нельзя было подключать external.
28. Zireael - 08 Февраля, 2019 - 03:38:49 - перейти к сообщению
Нужен код, который вызывает вылет. Тогда будет ответ почему вылетает.
29. Adomb - 08 Февраля, 2019 - 03:55:04 - перейти к сообщению
 Zireael пишет:
Нужен код, который вызывает вылет. Тогда будет ответ почему вылетает.

Он большой.
Диалог появляется в начале и больше не вызывается. В диалоге несколько переменных, которые срабатывают в самом начале скрипта, больше он ни на что не влияет. Если объявить переменные диалога в ручную и диалог убрать - exe работает.
В Киборе всё работает стабильно. В exe - вылет. Убиваю диалог destroydialog(0) - exe начинает работать тоже стабильно, значит дело в диалоге.
Как его "неубийство" завязано с остальным скриптом представить не могу. Диалог создан правильно с помощью редактора.

Powered by ExBB FM 1.0 Final