Показать сообщение отдельно
Старый 03.05.2017, 16:14   #1  
online
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Символ с кодом 160 в качестве пробела
Столкнулся с тем, что некоторые системы, например, SAP или 1C версии 7.7 выгружают числа типа 5555 в обычные текстовые файлы или в Эксель в виде строки "5 555", в которой в качестве разделителя используется не пробел, а символ с ASCII-кодом 160.
В результате, когда в Аксапте надо строку обратно преобразовать в число, приходится писать целые функции.
Есть ли какой-нибудь простой способ получить из строки "55 555,55" число в Аксапте 55555.55 ?
Я делаю так:
X++:
    str normalizeNum(str _s)
    {
        int n;
        str ret;
        ;
        for (n = 1; n <= strLen(_s); n++)
        {
            if (char2num(_s, n) != 160)
                ret += subStr(_s, n, 1);
        }
        return strrem(ret, " ");
    }
    ;

    strSum = strreplace("55 555,55", ",", ".");
    strSum = normalizeNum(strSum);
    realSum = str2num(strSum);