Negative values returned from file in NXC

2019-03-03 11:44发布

问题:

I am saving values to a .csv file in NXC(Not eXactly C) and then calling on them ata later point in time. The problem I am having is when calling any negative values back from a cell it is displayed as 0123 instead of -123 which is throwing all my additional calculations off.

The current code is:

OpenFileRead("map.csv", fSize, count);
  until (eof == true) {
    ReadLnString(count, val);
    int lstFwd = StrToNum(val);
    NumOut(0,LCD_LINE1,lstFwd);
  }
while(true);

Can anyone explain how to rectify this issue as it is causing me a great deal of stress now.

回答1:

StrToNum should convert negativ numbers. Its a bit strange that an integer number starts with 0. You should also use Enhanced NBC/NXC firmware.

First: You should always clear the screen before writing some output! Use:

NumOut(0,LCD_LINE1,lstFwd, DRAW_OPT_CLEAR_LINE);

If the problem still exists try:

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);