Отрицательные значения возвращаются из файла в NXC
Я сохраняю значения в файл.csv в NXC(не очень точно C), а затем вызываю их в более поздний момент времени. Проблема, с которой я сталкиваюсь, заключается в том, что при вызове любых отрицательных значений из ячейки она отображается как 0123 вместо -123, что отбрасывает все мои дополнительные вычисления.
Текущий код:
OpenFileRead("map.csv", fSize, count);
until (eof == true) {
ReadLnString(count, val);
int lstFwd = StrToNum(val);
NumOut(0,LCD_LINE1,lstFwd);
}
while(true);
Может кто-нибудь объяснить, как исправить эту проблему, так как это вызывает у меня большой стресс сейчас.
1 ответ
StrToNum должен конвертировать отрицательные числа. Немного странно, что целое число начинается с 0. Вы также должны использовать прошивку Enhanced NBC/NXC.
Во-первых: вы должны всегда очищать экран, прежде чем писать какой-либо вывод! Использование:
NumOut(0,LCD_LINE1,lstFwd, DRAW_OPT_CLEAR_LINE);
Если проблема все еще существует, попробуйте:
string val;
OpenFileRead("map.csv", fSize, count);
until (eof == true) {
ReadLnString(count, val);
int lstFwd = StrToNum(val);
if(SubStr(val, 0, 1) == "-") lstFwd *= -1; // Check if first char is "-"
NumOut(0,LCD_LINE1,lstFwd, DRAW_OPT_CLEAR_LINE);
}
while(true);