Zireael пишет:
удалить пробелы
Вы намешали одно с другим.
readtext сам удаляет не нужные пробелы, при этом правильно составляя массив координат для каждого экранного символа. Давая нам понять что любой промежуток - один символ.
Если вы произвели какую то деформацию текста, то деформацию координат относительно деформации текста вы тоже должны произвести сами.
Если вы не будете делать не нужную операцию
CODE:regexreplace(-1, #text, text, " ", ""); // удалить пробелы
то ДА начнется с 7 индекса.
Когда то я снимал видео где был перенос координат в вашем случае. Но зачем оно тут? Найдите свое Да без вашего удаления пробелов. За вас то сделал readtext. И по найденной позиции кликайте.
То есть текст на экране
123 45 да
будет для программы
123
пробел45
пробелда
Этот текст будет в результате в
text
text = "123 45 да";
И как на экране, так и для регулярного выражения
CODE:string text = "123 45 да";
regexsearch(1, #text, text, "да"); // найти слово да
messagebox (regexstart(0));//7
это будет седьмой символ.
Зачем что то еще деформировать?
Код распознает текст 123 45 да и кликнет ровно перед Д. В нижний левый его угол.
Цитата:
string Text;
loadsymbolbase ("C:\Program Files (x86)\Kibor\basetext.sib");
readtext (NUM | RU, #Text, 2, 1, -1, -1, -1, -1, -1, 0, 50, 53, 346, 135, 361, -1);
//messagebox (Text);//тест
regexsearch(1, #Text, Text, "да"); // найти слово да
mousemove(53+symbolxpos(regexstart(0)), 346+symbolypos(regexstart(0)));
messagebox (regexstart(0));//7
И не надо никаких своих regexreplace
В визуальном редакторе это только удаляет пробелы в выводе текста в переменную.
Проверяйте этот код (или код с виз редактора) на блокноте с поиском слова ДА или другого в строке с любым количеством пробелов между словами.
Короче.. Посмотрели на экран, увидели что Д является 7 индексом (учитывая пробелы) и учитывая что первый символ - 0. Распознали текст с помощью readtext. Он сам сделает текст что Д будет как и выглядит - 7. Нашли его позицию с помощью regexsearch. Она и вернет на 7.
И по седьмому и кликнули.
(Добавление)
Можно конечно сделать в виз редакторе, что бы при этой галке не учитывались пробелы для координат..
А пока можно найти ДА с помощью регулярки, учитывающей что Могут быть пробелы между буквами Д и А.. Но не удаляя их.
(Добавление)
CODE:string Text="Код распознает текст 123 45 да и кликнет ровно перед Д. В нижний левый его угол.";//да слитно
//string Text="Код распознает текст 123 45 д а и кликнет ровно перед Д. В нижний левый его угол.";//да раздельно
messagebox (Text);//тест
regexsearch(1, #Text, Text, "д(\s|)а"); // найти слово да или д а
messagebox (regexstart(0));//28