Кибор » Кибор - Интегрированная среда разработки ботов » Отчет о ошибках » Баг с передачей значения в функцию

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

1. Dantes3000 - 05 Апреля, 2024 - 04:04:36 - перейти к сообщению
У меня есть 2 довольно старых бота, в первом баг заметил давно, а сегодня увидел это во втором с хорошим примером.

Суть в том, что иногда при передаче значения в функцию (не переменная, а напрямую), это значние может или обнулится или замениться предыдущим.

Пример на скриншоте. В лог файле видно что дважды загрузилось значение stop_if_amount_in_beg_less_than, хотя по коду видно, что это должно было быть price_one_pack

Функция вызывается периодически, баг повторяется очень редко. У меня вчера был первый раз за несколько месяцев работы бота.

Что это может быть и как исправить?



Нажмите для увеличения



CODE:


external(INT, "cfg", "GetPrivateProfileStringA", "kernel32.dll");
external(INT, "WritePrivateProfileString", "WritePrivateProfileStringA", "kernel32.dll");
char c[256];
string put="d:/file.ini"; //путь к ini
int wait_before_cancel_exchange_sec=11;





save_var (0, put, #wait_before_cancel_exchange_sec, #c[0], "wait_before_cancel_exchange_sec", cfg("settings", "wait_before_cancel_exchange_sec", 0, address(#c[0]), sizearray(c), put));



function save_var(int show_msgbox, string path_cfg, int #var, char #ch, string err, int ret)
{
if(ret<1)
{
WritePrivateProfileString ("settings", err, format(var), path_cfg);
return 0;
}

string rez[1];
//int k = regexsearch(1, #rez[0], format(#ch[0]), "\d+");
int k = regexsearch(1, #rez[0], format(#ch[0]), "(?<!\d)-?\d*[.,]?\d+");
var=formatsn(rez[0]);
}


2. Zireael - 05 Апреля, 2024 - 04:12:48 - перейти к сообщению
Попробуйте сначала вызывать cfg, потом в save_var передать результат.
3. Dantes3000 - 05 Апреля, 2024 - 04:14:04 - перейти к сообщению
И главная пробелма в том, что в price_one_pack записалось 50, а должно было быть 18000
Я просрал туеву хучу бабла)
(Добавление)
 Zireael пишет:
Попробуйте сначала вызывать cfg, потом в save_var передать результат.


Это не связано с cfg. В первом боте такая же проблема с обычной функцией происходит
4. Zireael - 05 Апреля, 2024 - 04:25:01 - перейти к сообщению
 Цитата:
Это не связано с cfg. В первом боте такая же проблема с обычной функцией происходит

Имелось ввиду не использовать вложенный вызов функций.
5. Dantes3000 - 05 Апреля, 2024 - 05:37:34 - перейти к сообщению
Zireael , этот вложенный вызов просто возвращает код ошибки или успеха. А проблема в 5-ом параметре, который строка.

Вот пример или первого бота, пришлось костыли писать, возвращать -2 если второй параметр пришел пустым. В коде нигде нет пустого параметра, всегда что-то передаю, но ошибка случается.


Нажмите для увеличения
6. Kibor - 05 Апреля, 2024 - 06:17:15 - перейти к сообщению
Если функция что то возвращает, она Должна возвращать в Любом случае.
А не Тут возвращает, а тут нет.
Поэтому такое поведение.
7. Dantes3000 - 05 Апреля, 2024 - 10:00:12 - перейти к сообщению
 Kibor пишет:
Если функция что то возвращает, она Должна возвращать в Любом случае.
А не Тут возвращает, а тут нет.
Поэтому такое поведение.


Ничего не понял, но очень интересно. Можно подробнее?
8. Dantes3000 - 18 Апреля, 2024 - 02:25:17 - перейти к сообщению
Kibor , Добавил я return в функции. Всё равно через какое-то время глюки



Нажмите для увеличения

Powered by ExBB FM 1.0 Final