26.04.2023, 14:01 | #27 |
Участник
|
В классе Global метод con2Str
В стандарте, если в контейнере значения первых позиций будут пустыми строками, то метод их проигнорирует и не добавит после них разделитель. Из-за этого количество элементов в контейнере и в результирующей строке будет разным. Может быть в этом и была какая-то логика, если бы это работало со всеми пустыми элементами. Но вот "пустые" значения идущие после первого "не пустого" элемента контейнера уже будут обрамлены разделителем. Я считаю что это явно ошибка и в строке должны быть представлены все элементы контейнера и пустые и не пустые. Причина ошибки и собственно исправление: X++: static str 1000 con2Str(container c, str 10 sep = ',') { int idx = 0; int len = conlen(c); str 100 tmp; str 1000 retStr; ; while (idx < len) { idx += 1; // KSM fix empty string -->> // if (retStr) if (idx > 1) // KSM fix empty string <<-- retStr += sep; tmp = conpeek(c,idx); retStr += tmp; } return retStr; } Здесь интересен ещё один момент. Как значения типа anytype преобразуется в строку? По каким правилам происходит такое преобразование? Например дата: X++: static void TestAnytype2StrConvert(Args _args) { date t = today(); anyType a = t; str 100 s = a; ; info(s); } |
|
|
За это сообщение автора поблагодарили: Logger (1). |