|
Преобразование в число без попытки? | ☑ | ||
---|---|---|---|---|
0
YF
01.06.12
✎
10:38
|
В 7.7 Число(любаяХерь) - без ошибок будет некое число
В 8.2 Число(любаяХерь) - либо будет число, либо вывалится в ошибку, подскажите как делать, чтобы ошибка не возникала |
|||
1
MadHead
01.06.12
✎
10:40
|
а чем попытка не угодила?
Либо обрабатывать вручную все лишние символы либо пустую строку |
|||
2
pumbaEO
01.06.12
✎
10:41
|
RegExp вырезать только цифрофые символы, не забыть про неразрывный пробел и можно без попытки.
|
|||
3
MadHead
01.06.12
✎
10:41
|
Имхо. от религиозных взглядов при программировании стоит отречься )
|
|||
4
Ursus maritimus
01.06.12
✎
10:41
|
(2) А вот и куй
|
|||
5
pumbaEO
01.06.12
✎
10:43
|
(4) куй regexp-ом вырезать извини не смогу, это надо к хирургу обращаться.
|
|||
6
Живой Ископаемый
01.06.12
✎
10:43
|
Функция ЕстьНеЦифры(Знач СтрокаПроверки) Экспорт
|
|||
7
zinch
01.06.12
✎
10:43
|
через ОписаниеТипа
|
|||
8
zinch
01.06.12
✎
10:44
|
метод ПривестиЗначение
|
|||
9
Ursus maritimus
01.06.12
✎
10:44
|
(5) Куй, что после вырезания лишних символов можно без попытки
|
|||
10
Defender aka LINN
01.06.12
✎
10:45
|
ПривестиЗначение
|
|||
11
Maxus43
01.06.12
✎
10:50
|
на мисте эпидемия, всем перестала нравится Попытка Исключение, что за новый трэнд?
|
|||
12
Stepa86
01.06.12
✎
10:53
|
(11) Исключения нужны для исключительных ситуаций и для их проброса вверх по стеку, применение их в положительных и отрицательных сценариях работы лучше свести к минимуму. Можно рассматривать попытку как GoTo который работает не только в рамках процедуры, но и по стеку передать управление может
|
|||
13
Ursus maritimus
01.06.12
✎
10:53
|
(11) Вообще говоря, эта конструкция предназначена для локализации ошибок, на которые ты повлиять не можешь. Типа шлешь запрос в интернет серверу, а он не отвечает.
|
|||
14
Maxus43
01.06.12
✎
10:55
|
(12)(13) в контексте (0) - кривые данные передаются откуда-то, не типизированные. имхо от этого надо уходить а не пытаться "Мама" в число переделать
|
|||
15
Ursus maritimus
01.06.12
✎
10:56
|
(14) А кто спорит-то?
|
|||
16
fisher
01.06.12
✎
10:57
|
(11) Фигасе. А был тренд любителей попытки/исключения? Хорошо, что я не в тренде...
|
|||
17
Maxus43
01.06.12
✎
10:59
|
(16) трэнд избегать попытка-исключение там, для чего по сути он и придуман... например
v8: Как проверить что Ид нормальный для ЗначениеИзСтрокиВнутр(Ид)? |
|||
18
Stepa86
01.06.12
✎
10:59
|
(14) если мы можем обработать ситуацию без вызова исключения, то стоит это сделать. Я как то очень долго ловил ошибку "В данной транзакции уже происходили ошибки". Оказалось, что в транзакции записи было преобразование строки в число через попытку и исключение рвало транзакцию, хотя вещь вроде б безобидная
|
|||
19
Maxus43
01.06.12
✎
11:00
|
(18) не спорю что надо от этого уходить, но может есть смысл разобраться с входящими данными и не допускать такой ситуации сначала
|
|||
20
Shurjk
01.06.12
✎
11:01
|
(0) Разбираешь сначала строки если в ней не только цифры, то выдаешь сообщение оневозможности преобразования, на самом деле попытка отработает примерно так же.
|
|||
21
Maxus43
01.06.12
✎
11:03
|
вобще путь нормальный в (6), есть типовые функции для разбора строк
|
|||
22
Stepa86
01.06.12
✎
11:06
|
(19) от заложенной логики зависит. Если на вход должна приходить строка, которую всегда можно преобразовать в число и иного не должно быть в принципе, то падать в исключение самое оно. Если логика - смогли преобразовать - молодцы, нет, так 0/Null/Неопределено вернем - то исключение не нужно. Самая наверно частая ситуация - дернуть число из номера или кода, тут исключение не нужно.
|
|||
23
YF
01.06.12
✎
11:07
|
(11) Попытка Исключение много строк занимает в коде :-), да и при отладке писец когда ставишь остановку по ошибке
|
|||
24
YF
01.06.12
✎
11:10
|
(14) А на мой взгляд тупая реализация функции преобразования типов. В СП нигде не написано, что в параметре должно быть что-то определенное.
Блин, походу придется свою функцию приделывать, в которой и будет попытка |
|||
25
Maxus43
01.06.12
✎
11:16
|
(24) чем (6) то не устраивает? непонимать... без попытки будет
|
|||
26
Никола_
Питерский 01.06.12
✎
11:28
|
(11) БП 2.0 Количество попыток 4080 шт.
БП 3.0 Количество попыток 2199 шт. Так что тренд )))) |
|||
27
pumbaEO
01.06.12
✎
11:30
|
(26) а как изменяется количество "Выполнить"?
|
|||
28
Maxus43
01.06.12
✎
11:33
|
(27) ".Выполнить()", а то там таких слов у процедур и.д. много)
|
|||
29
oleg_km
01.06.12
✎
12:20
|
Функция Стр2Число(Знач текСтрока, РазделительДроби = ".") Экспорт
оРег = Новый COMОбъект("VBScript.RegExp"); оРег.Pattern = "[^0-9" + РазделительДроби + "+-]"; оРег.Global = Истина; текСтрока = СтрЗаменить(оРег.Replace(текСтрока, ""), РазделительДроби, "."); Рез = Неопределено; Попытка Рез = Число(текСтрока); Исключение КонецПопытки; Возврат Рез; КонецФункции |
|||
30
oleg_km
01.06.12
✎
12:20
|
Попытку оставил просто так, на всякий случай
|
|||
31
Ursus maritimus
01.06.12
✎
12:26
|
(30) Не на всякий случай, а на вполне конкретный. Вот, например: "123.123.123"
|
|||
32
DailyLookingOn Sunset
01.06.12
✎
12:34
|
(26)
В БП3 пока функционал меньше БП2. Как догонятся, попыток больше станет. |
|||
33
Vladal
01.06.12
✎
12:38
|
А если посимвольно перебрать всю строку в цикле?
Результат = "0"; Цикл Если Символ(источник, счетчик, 1) - это цифра Тогад Результат = Результат + Символ; КонецЦикла; Результат = Число(Результат) |
|||
34
YF
01.06.12
✎
14:05
|
(33) Из строки "123-90 вася 100" получишь число 1230100, а должно быть 0
(25) Устраивает, тока все равно отдельной функцией надо преобразовывать в число. Вобщем логика разработчиков так и осталась загадкой. Прежде чем преобразовать надо узнать а преобразуется ли - бред. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |