Kibor пишет:
Где код полный, который можно запустить и посмотреть? Толку от таких ошибок как (у меня не работает или работает не так)
Нашел я в чем ошибка, почему закрывается кибор при выводе логов:
Ошибка возникает при использовании:
CODE:
readtext (MARK, #auto, 3, 1, -1, -1, -1, -1, -1, 0, 30, 134, 413, 166, 445, wind);
Если переменную #auto назначить вручную auto=">"; то ошибок и закрытий нету.
ВОТ код основной программы:
Код основной: (Отобразить)
CODE:win wind=window ("BlueStacks Android PluginAndroid", -1, window ("BlueStacks", -1, -1));
int start_status=0;
loadsymbolbase (pathfolder()+"\swinautomate\sw_base_NEW.sib");
#include "F:\Soft\Kibor\swinautomate\logs.txt";
string auto;
string s="", rn=formatic(13)+formatic(10);
int log_z=0;
int max_string=15; // максимальное количество строк лога, лишние будут удалены начиная с начала
while(start_status!=0)sleep(500);
loop()
{
auto_battle(); // Авто бой включить
sleep(100);
}
//Авто бой включить
function auto_battle(){
//auto=">"; // Если напрямую назначаем, то все нормально
readtext (MARK, #auto, 3, 1, -1, -1, -1, -1, -1, 0, 30, 134, 413, 166, 445, wind);
// Если назначение идет через readtext, кибор закрывается достигнув лог 15
if (auto==">") { // alt 62
//sendmouse(LEFT, 123+symbolxpos(0)+rand(5, 5), 403+symbolypos(0)-rand(5, 5), wind);
text_static2[0]=add_string("Включили Автобой");
sleep(50);
//auto="";
}
}
/*LOGS*/
function add_string(string temp)
{
string ss[2];
s=s+temp+rn;
if(regexsearch(2, #ss[0], s, "(?<=\r\n).+?(?=\r\n)", SINGLELINE | RIGHTTOLEFT)>1) // ; получаем последние 2 строки
{
//if(ss[0] == ss[1]){regexsearch(1, #s, s, ".*\r\n(?=.*?\r\n)", SINGLELINE); return s;} // если они совпадают, обрезаем последнюю
if(log_z>max_string) // если достигнут максимум строк в логе
{
regexsearch(1, #s, s, "(?<=\r\n).*", SINGLELINE);
}
else log_z++;
}
return s;
}
Это код Диалога: (Отобразить)
CODE:
int pos_size_static2[1][4];
string text_static2[1];
pos_size_static2[0][0]=18; pos_size_static2[0][1]=14; pos_size_static2[0][2]=250; pos_size_static2[0][3]=343;
text_static2[0]="";
//////////
createdialog(2, STATIC, #pos_size_static2[0][0], #text_static2[0]);
//////////
showdialog(2, "Логи действий", 383, 257, 296, 413, 0, 1);
//////////
Помогите пожалуйста понять, решить.
(Добавление)
Даже попробовал схитрить, назначить другую переменную проверив if'ом, так же закрытие кибор, вывод что закрытие идет если в функции просто присутствует распознавание текста, и функция вывода лога.
CODE:
function auto_battle(){
string auto1;
readtext (MARK, #auto, 3, 1, -1, -1, -1, -1, -1, 0, 30, 134, 413, 166, 445, wind);
if (auto==">" && symbolcorrect(kor)>0.9) auto1=">";
if (auto1==">") { // alt 62
//sendmouse(LEFT, 123+symbolxpos(0)+rand(5, 5), 403+symbolypos(0)-rand(5, 5), wind);
text_static2[0]=add_string("Авто включено");
sleep(50);
//auto="";
}
}