Добрый день, так и не удалось решить проблему с вылетом Кибора. Скрипт может проработать несколько часов, а может несколько минут, после чего вылезает всем знакомая плашка "Прекращены работа программы, искать решение в интернете..".
В чате советовали запустить с отладчиком: по коду проблем нет, все переменные в пределах, вылетает каждый раз в рандомных местах, чаще всего после sleep().
Винда 8.1 х64, 8 гб ОЗУ, загружается на 60-70%. Еще на компе установлен Visual C++ он выдает такую плашку:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Возможно это подскажет в чем причина
1. Paskuda - 09 Мая, 2021 - 09:07:33 - перейти к сообщению
2. Zireael - 09 Мая, 2021 - 09:21:20 - перейти к сообщению
Без кода никто ничего не подскажет.
3. Paskuda - 09 Мая, 2021 - 09:44:37 - перейти к сообщению
Я понимаю, я читал описание раздела, просто код на 1000+ строк, повтроюсь останавливается каждый раз в разных местах, выложу функцию на которой вылетел последний раз:
Просто я думал что
wincore.cpp
line 951
Прояснит ситуацию
CODE:
function piece(int add)
{
x9=x7+PosX[7]+165;
if(add==0)
{y9=PosY[7]+160;}
else
{y9=add+imageheight(#Piece[0][0]);}
if(findimage(1, #Piece[0][0], 0, #PosX[9], #PosY[9], x9, y9, win.width, win.height,
20, 20, 20, 20, 20, 20, 80, 1, win)==0)
{return 0;}
enablesymbolbase(0);disablesymbolbase(1);disablesymbolbase(2);
readtext (NUM | RU, #Temp, 20, 1, 40, -1, -1, -1, -1, 0, 30,
x9+PosX[9]+imagewidth(#Piece[0][0])+25, y9+PosY[9],
x9+PosX[9]+imagewidth(#Piece[0][0])+170, y9+PosY[9]+imageheight(#Piece[0][0]), win);
mousemove(x9+PosX[9]+imagewidth(#Piece[0][0])/2,
y9+PosY[9]+imageheight(#Piece[0][0])/2, win);sleep(100);
Code();
if(formatsn(Temp)==-10011001)
{Bee();messagebox(Timer()+"Преобр Cur");goto global z;}
else
{
textout(1, 0, 45, "Cur "+Temp, tout);sleep(100);
return formatsn(Temp);
}
}
function piece(int add)
{
x9=x7+PosX[7]+165;
if(add==0)
{y9=PosY[7]+160;}
else
{y9=add+imageheight(#Piece[0][0]);}
if(findimage(1, #Piece[0][0], 0, #PosX[9], #PosY[9], x9, y9, win.width, win.height,
20, 20, 20, 20, 20, 20, 80, 1, win)==0)
{return 0;}
enablesymbolbase(0);disablesymbolbase(1);disablesymbolbase(2);
readtext (NUM | RU, #Temp, 20, 1, 40, -1, -1, -1, -1, 0, 30,
x9+PosX[9]+imagewidth(#Piece[0][0])+25, y9+PosY[9],
x9+PosX[9]+imagewidth(#Piece[0][0])+170, y9+PosY[9]+imageheight(#Piece[0][0]), win);
mousemove(x9+PosX[9]+imagewidth(#Piece[0][0])/2,
y9+PosY[9]+imageheight(#Piece[0][0])/2, win);sleep(100);
Code();
if(formatsn(Temp)==-10011001)
{Bee();messagebox(Timer()+"Преобр Cur");goto global z;}
else
{
textout(1, 0, 45, "Cur "+Temp, tout);sleep(100);
return formatsn(Temp);
}
}
Просто я думал что
wincore.cpp
line 951
Прояснит ситуацию
4. Zireael - 09 Мая, 2021 - 10:10:20 - перейти к сообщению
Цитата:
if(findimage(1, #Piece[0][0], 0, #PosX[9], #PosY[9], x9, y9, win.width, win.height,
20, 20, 20, 20, 20, 20, 80, 1, win)
20, 20, 20, 20, 20, 20, 80, 1, win)
Нельзя давать имя переменной, которой совпадает с типом данных.
5. Paskuda - 09 Мая, 2021 - 10:15:48 - перейти к сообщению
Извиняюсь, это я подправил чтоб понятнейц было , имя окна win_Cur
CODE:
function piece(int add)
{
x9=x7+PosX[7]+165;
if(add==0)
{y9=PosY[7]+160;}
else
{y9=add+imageheight(#Piece[0][0]);}
if(findimage(1, #Piece[0][0], 0, #PosX[9], #PosY[9], x9, y9, win_Cur.width, win_Cur.height,
20, 20, 20, 20, 20, 20, 80, 1, win_Cur)==0)
{return 0;}
enablesymbolbase(0);disablesymbolbase(1);disablesymbolbase(2);
readtext (NUM | RU, #Temp, 20, 1, 40, -1, -1, -1, -1, 0, 30,
x9+PosX[9]+imagewidth(#Piece[0][0])+25, y9+PosY[9],
x9+PosX[9]+imagewidth(#Piece[0][0])+170, y9+PosY[9]+imageheight(#Piece[0][0]), win_Cur);
mousemove(x9+PosX[9]+imagewidth(#Piece[0][0])/2,
y9+PosY[9]+imageheight(#Piece[0][0])/2, win_Cur);sleep(100);
Code();
if(formatsn(Temp)==-10011001)
{Bee();messagebox(Timer()+"Преобр Cur");goto global z;}
else
{
textout(1, 0, 45, "Cur "+Temp, tout);sleep(100);
return formatsn(Temp);
}
}
function piece(int add)
{
x9=x7+PosX[7]+165;
if(add==0)
{y9=PosY[7]+160;}
else
{y9=add+imageheight(#Piece[0][0]);}
if(findimage(1, #Piece[0][0], 0, #PosX[9], #PosY[9], x9, y9, win_Cur.width, win_Cur.height,
20, 20, 20, 20, 20, 20, 80, 1, win_Cur)==0)
{return 0;}
enablesymbolbase(0);disablesymbolbase(1);disablesymbolbase(2);
readtext (NUM | RU, #Temp, 20, 1, 40, -1, -1, -1, -1, 0, 30,
x9+PosX[9]+imagewidth(#Piece[0][0])+25, y9+PosY[9],
x9+PosX[9]+imagewidth(#Piece[0][0])+170, y9+PosY[9]+imageheight(#Piece[0][0]), win_Cur);
mousemove(x9+PosX[9]+imagewidth(#Piece[0][0])/2,
y9+PosY[9]+imageheight(#Piece[0][0])/2, win_Cur);sleep(100);
Code();
if(formatsn(Temp)==-10011001)
{Bee();messagebox(Timer()+"Преобр Cur");goto global z;}
else
{
textout(1, 0, 45, "Cur "+Temp, tout);sleep(100);
return formatsn(Temp);
}
}
6. Paskuda - 08 Июня, 2021 - 00:09:24 - перейти к сообщению
Нашел причину, точнее причину хотелось бы узнать, а вылетает из-за функции textout, разбросанной по скрипту, по типу:
Как я это понял: если нажать " Завершение программы..", а следующее сообщение (см. 1 пост) просто сдвтнуть в сторону ничего не нажимая, скрипт возобновляет работу. Если в коде остается хоть один textout, то рано или поздно такая фигня вылезит.
Последний параметр менял, не заметил разницы все время мерцает.
(Добавление)
Уточнение: после завершения программы когда скрипт возобновляется текстовые метки пропадают
CODE:
int A; //тут некая глобальная переменная
textout(0, 30, 75, "Значение: "+format(A), 1)
int A; //тут некая глобальная переменная
textout(0, 30, 75, "Значение: "+format(A), 1)
Как я это понял: если нажать " Завершение программы..", а следующее сообщение (см. 1 пост) просто сдвтнуть в сторону ничего не нажимая, скрипт возобновляет работу. Если в коде остается хоть один textout, то рано или поздно такая фигня вылезит.
Последний параметр менял, не заметил разницы все время мерцает.
(Добавление)
Уточнение: после завершения программы когда скрипт возобновляется текстовые метки пропадают