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

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

1. Dantes3000 - 01 Июня, 2020 - 07:18:03 - перейти к сообщению
Сканируется большая область, получается много текста. Как эффективнее всего кликнуть по правильному слову? Сейчас пользуюсь таким методом, но он не стабильный

CODE:
readtext (RU, #ch[0][0], 8, 1, -1, -1, -1, -1, -1, 0, -1, st_x, st_y, xe, ye, -1);
for(int q=0; q<30; q++)
{
if(regexsearch(1, #Text, format(#ch[q][0]), "прод")>0)
{
for(int w=0; w<40; w++)
{
if(ch[q][w]=='п' && ch[q][w+1]=='р' && ch[q][w+2]=='о' && ch[q][w+3]=='д')
{
goto v;
}
sleep(1);
}
sleep(1);
}
}
messagebox("Не найдено");
v:;
mouse(LEFT, symbolxpos(q,w)+st_x, symbolypos(q,w)+st_y);
2. Zireael - 01 Июня, 2020 - 18:07:47 - перейти к сообщению
 Цитата:
но он не стабильный

Нестабильный в чём?
3. Dantes3000 - 02 Июня, 2020 - 01:39:35 - перейти к сообщению
Zireael , не знаю. не у всех работает, да и не оптимальный по скорости. Явно ведь есть вариант по-лучше
4. Zireael - 02 Июня, 2020 - 04:04:06 - перейти к сообщению
 Цитата:
не у всех работает

Неверно распознает текст или не находит позицию или неверно её находит?
 Цитата:
да и не оптимальный по скорости.

Большой текст быстро не распознает, особенно если интеллект включен.
Поиск позиции быстрее и проще искать через regexstart, при этом текст распознавать в string.
CODE:
string Text = "купить продать"; // допустим это распознанный текст
int start_pos;

if(regexsearch(1, #Text, Text, "прод"))
{
regexstart(#start_pos);
messagebox("Позиция символа: "+format(start_pos));

//mousemove(symbolxpos(start_pos), symbolypos(start_pos)); // координаты слова
}
5. Dantes3000 - 02 Июня, 2020 - 06:26:17 - перейти к сообщению
 Zireael пишет:
Поиск позиции быстрее и проще искать через regexstart, при этом текст распознавать в string.

Вот это мне как раз и нужно было. А то в трёх циклах искать по-символьно это неправильно совсем. Спасибо

Powered by ExBB FM 1.0 Final