|
Преобразование к типу число не может быть выполнено | ☑ | ||
---|---|---|---|---|
0
VenSaitto
15.06.19
✎
11:21
|
Всем привет. Платформа 8.3.10.2650
Есть список значений Рез http://priscree.ru/img/daa17fa6d8b8e2.png При попытке привести значение к типу число Число(Рез[0].Значение) вываливается ошибка, невозможно привести к типу число http://priscree.ru/img/e46286bf35cc36.png проверяю, Рез[0].Значение = " 1 ", все ок. http://priscree.ru/img/006b96762968be.png Число(" 1 ") - так же отрабатывает нормально. http://priscree.ru/img/a45917b4a6a290.png Как только Число(Рез[0].Значение) - то ошибка. Все проверки производил в один момент в отладчике при остановке. С чем это может быть связано? Почему не работает? |
|||
1
vde69
15.06.19
✎
11:26
|
попытка
а = Число(СокрЛП(Рез[0].Значение)) Исключение а = 0 КонецПопытки |
|||
2
vde69
15.06.19
✎
11:29
|
(1) подсказываю, у тебя пробелы мешают
|
|||
3
VenSaitto
15.06.19
✎
11:30
|
(1) Это не дает ответ, Рез[0].Значение = " 1 ", почему валится при попытке привести к числу?
Пробелы тоже не причем, ведь Число(" 1 "), спокойно отрабатывает |
|||
4
shuhard
15.06.19
✎
11:38
|
(3) переменная совпала по имени с реквизитом
|
|||
5
VenSaitto
15.06.19
✎
11:43
|
(4) К сожалению, исключено)
|
|||
6
shuhard
15.06.19
✎
11:45
|
(5) реальный код покажи, нам табло не интересно
|
|||
7
Фрэнки
15.06.19
✎
11:49
|
мне похожее где-то попадалось. Приходилось ставить явные типы. Проблема в том, что в Число может преобразоваться тип Строка.
А вот остальные типы не проверял. Но в значении из списка значений не установлен явным образом тип Строка. В этом случае гораздо удобней Список значений заменить на Структура или Массив. Работать будет или Число(СокрЛП(Рез[0].Значение)) или Число(Строка(Рез[0].Значение)) |
|||
8
VenSaitto
15.06.19
✎
11:52
|
(7) Не то, не то не отрабатывает.
В список значений, данные попадают из файла. Как то кодировка файла может влиять на данное дело? Вот пример, где видно, что Рез[0].Значение отличается по внешнему виду и от " 1 " и от " 1 " http://priscree.ru/img/e4628502699179.png |
|||
9
Фрэнки
15.06.19
✎
11:57
|
Ну коды символов тогда попробуй посмотреть
|
|||
10
shuhard
15.06.19
✎
11:59
|
(8) что-то мешает убрать пробелы СокрЛП ?
|
|||
11
VenSaitto
15.06.19
✎
12:02
|
(10) могут попадаться значения типа " 1 2 3 " , СокрЛП не решит проблему
|
|||
12
vde69
15.06.19
✎
12:04
|
(11) а это какое значение? неужели 123?
|
|||
13
vde69
15.06.19
✎
12:05
|
судя по всему у тебя юникод (16 байт на 1 символ)
|
|||
14
VenSaitto
15.06.19
✎
12:05
|
(9) КодСимвола(Лев(Рез[0].Значение,1)) = 0, когда КодСимвола(" ")
Походу, что кривой пробел, спасибо. Странно, но код работал уже много времени и в один прекрасный момент работать перестал |
|||
15
VenSaitto
15.06.19
✎
12:05
|
(12) да, 123
|
|||
16
VenSaitto
15.06.19
✎
12:06
|
(14) когда КодСимвола(" ") = 32
|
|||
17
Фрэнки
15.06.19
✎
12:09
|
пробелы из таких строк убирают через СтрЗаменить
з.ы. Но в платформах сейчас какая-то путаница в справке синтакс-помощника на эту функцию |
|||
18
vde69
15.06.19
✎
12:17
|
(14) это не пробел кривой, это юникод... читай (13), поставь правильную кодировку при чтении файла и все будет хорошо
|
|||
19
vde69
15.06.19
✎
12:18
|
||||
20
VenSaitto
15.06.19
✎
12:51
|
(18) ЧтениеТекста(ИмяФайлаРезультата, КодировкаТекста.ANSI) или UTF все равно кодсимвола остается 0, и дальше та же проблема. Как правильно прочитать, чтобы пробел код символа 0 преобразовался в 32?
|
|||
21
shuhard
15.06.19
✎
12:56
|
(20) выложи кусок файла, без него отсутствует предмет обсуждения
|
|||
22
xXeNoNx
15.06.19
✎
13:00
|
(1) костыль-style?
|
|||
23
VenSaitto
15.06.19
✎
13:00
|
||||
24
VenSaitto
15.06.19
✎
13:03
|
Можно конечно так,
Число(СтрЗаменить(Рез[0].Значение,Символ(0),Символ(32))) Но, есть ли более правильное решение?) |
|||
25
vde69
15.06.19
✎
13:29
|
Число(СтрЗаменить(Рез[0].Значение,Символ(0),""))
|
|||
26
vde69
15.06.19
✎
13:31
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |