Кибор » Кибор - Интегрированная среда разработки ботов » Отчет о ошибках » ошибка компилятора #3

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

1. Redear - 19 Мая, 2023 - 08:14:25 - перейти к сообщению
День добрый, столкнулся с интересной ошибкой

есть сравнение массива
CODE:
for (i=1; i<=24; i++) { if (HERONAME==WH[WHHeroStart+i-1][WHRow]) { check=i; break; } }


Если конструкция в массиве WHHeroStart-1+i, то компилятор i воспринимает как отрицательное число. и вычиытает i из WHHeroStart
Если конструкция WHHeroStart+i-1, то отрабатывается нормально

ЛОГ С ОШИБКОЙ
WHHeroStart-1+i
if ( HERONAME'SHARED1' == WH'DELETED(not found): asdasd, | AUTO CREATED' [ WHHeroStart'16' - 1 + i'1' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'2139' [ WHHeroStart'16' - 1 + i'2' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'#REF!' [ WHHeroStart'16' - 1 + i'3' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'4' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'EU' [ WHHeroStart'16' - 1 + i'5' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'45065,57964' [ WHHeroStart'16' - 1 + i'6' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'7' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'8' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'KRYTUGOLOVKA#2880' [ WHHeroStart'16' - 1 + i'9' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'0' [ WHHeroStart'16' - 1 + i'10' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'Èëüÿ' [ WHHeroStart'16' - 1 + i'11' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'OWN' [ WHHeroStart'16' - 1 + i'12' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'HCL' [ WHHeroStart'16' - 1 + i'13' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'30' [ WHHeroStart'16' - 1 + i'14' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'15' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'16' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'17' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'18' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'19' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'20' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'21' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'22' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'23' ] [ WHRow'15' ] )
if ( HERONAME'SHARED1' == WH'' [ WHHeroStart'16' - 1 + i'24' ] [ WHRow'15' ] )


ЛОГ БЕЗ ОШИБКИ
WHHeroStart+i-1
for ( i = 1 ; i'395' <= 24 ; i'395' ++ )
if ( HERONAME'SHARED2' == WH'NAKAMA' [ WHHeroStart'16' + i'1' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'LOWRUNE' [ WHHeroStart'16' + i'2' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'RAL-II' [ WHHeroStart'16' + i'3' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'IUNK' [ WHHeroStart'16' + i'4' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'RAL-I' [ WHHeroStart'16' + i'5' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'START' [ WHHeroStart'16' + i'6' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'RUBY-I' [ WHHeroStart'16' + i'7' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'ISP-I' [ WHHeroStart'16' + i'8' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'AMETH-I' [ WHHeroStart'16' + i'9' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'10' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'11' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'12' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'13' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'14' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'15' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'16' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'17' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'18' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'19' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'20' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'21' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'22' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'23' - 1 ] [ WHRow'15' ] )
if ( HERONAME'SHARED2' == WH'' [ WHHeroStart'16' + i'24' - 1 ] [ WHRow'15' ] )
2. Zireael - 19 Мая, 2023 - 17:52:44 - перейти к сообщению
Нужен запускаемый код, чтобы можно было повторить ошибку.
 Цитата:
ЛОГ С ОШИБКОЙ

А где ошибка?
3. ivantu - 20 Мая, 2023 - 06:19:16 - перейти к сообщению
del
4. Redear - 20 Мая, 2023 - 12:03:15 - перейти к сообщению
думаю видно, что при одинаковом смысле аргументов
(WHHeroStart-1+i) = (WHHeroStart+i-1)
для компилятора это разные конструкции, во первом случае i воспринимается как отрицательное число
5. Zireael - 20 Мая, 2023 - 13:39:44 - перейти к сообщению
CODE:
int WH[5][1];
WH[0][0] = 10; WH[1][0] = 20; WH[2][0] = 30; WH[3][0] = 40; WH[4][0] = 50;
int WHHeroStart = 0;
int WHRow = 0;
int i;

for(i = 1; i<6; i++)
{
messagebox(format(WH[WHHeroStart-1+i][WHRow])+" "+format(WH[WHHeroStart+i-1][WHRow]));

if(WH[WHHeroStart-1+i][WHRow] == WH[WHHeroStart+i-1][WHRow])messagebox("true");
else messagebox("false");
}

Код работает.
Я не утверждаю что бага нет, но приведите пример где условие не выполняется, тогда будет понятно что исправлять.

Powered by ExBB FM 1.0 Final