У меня есть 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]);
}
(Отредактировано автором: 05 Апреля, 2024 - 12:09:55) |