![]() |
![]() |
![]() |
|
А как узнать что в строке записано не-число? | ☑ | ||
---|---|---|---|---|
0
nachinajushij
13.10.04
✎
15:46
|
А как узнать что в строке записано не-число?
|
|||
1
Волшебник
13.10.04
✎
15:46
|
Попробуй преобразовать в число, если не получится, то не-число.
|
|||
2
Волшебник
13.10.04
✎
15:46
|
(1)+ Метод Рупора.
|
|||
3
nachinajushij
13.10.04
✎
15:47
|
Не получится - это исключение или возврат 0
|
|||
4
Gary
13.10.04
✎
15:48
|
см.уроки из книги "Программирование на Си. Кернига, Ричи" :-), хотя вполне еще где-нибудь подобное есть, например, на Перле. Я имею в виду алгоритмы функций IsDigit, IsCharacter.
|
|||
5
Волшебник
13.10.04
✎
15:49
|
(3) В 8.0 исключение. В 7.7 - не помню.
|
|||
6
ОбезьянаС Гранатой
13.10.04
✎
15:49
|
(1)+(2) "000195" согласно твоему методу число или нет?
|
|||
7
ОбезьянаС Гранатой
13.10.04
✎
15:50
|
+(6)то есть, методу Рупора, конечно...
|
|||
8
wolk
13.10.04
✎
15:54
|
(0) - очень просто
Если А = Число(А) Тогда Возврат "Да, это есть число"; Иначе Возврат "Нет, нихрена это не число"; КонецЕсли; |
|||
9
nachinajushij
13.10.04
✎
15:54
|
(3) - Никто не в курсе? В доке об это ни слова!
|
|||
10
wolk
13.10.04
✎
15:54
|
(8+) - разуммется это в попытке
|
|||
11
nachinajushij
13.10.04
✎
15:55
|
(8) - Гениально!
|
|||
12
ОбезьянаС Гранатой
13.10.04
✎
15:55
|
(8) что курим??
|
|||
13
nachinajushij
13.10.04
✎
15:56
|
(10) Так все-таки в 7.7 Число() исключение выбрасывает?
|
|||
14
wolk
13.10.04
✎
15:58
|
(13) - если (8) будет внутри попытки, то если А - не число, попадёшь в исключение и делай чё надо.
|
|||
15
wolk
13.10.04
✎
15:58
|
(12) - а что плохого в предельно простом решении?
|
|||
16
ОбезьянаС Гранатой
13.10.04
✎
15:59
|
(15)прочитай 0:
дано: строка, то есть на входе "А554", "427" и прочее... на выходе мы должны выяснить, число ли там... |
|||
17
nachinajushij
13.10.04
✎
16:00
|
То тогда Число() не подходит. Т.к. я уже сижу внутри транзакции :-(
|
|||
18
wolk
13.10.04
✎
16:01
|
(16) - сорри, невнимательно (0) читал. Тогда так:
Б = Число(А); Если Б <> 0 Тогда ........... КонецЕсли; |
|||
19
nachinajushij
13.10.04
✎
16:01
|
Вся байда нужна для универсальности зарузки кодов в справочник (Код справочника 1с - текстовый / числовой), загружаемый код - текстовый / числовой
|
|||
20
ОбезьянаС Гранатой
13.10.04
✎
16:02
|
(17) я правильно изложила задачу в (16)?
тогда при чем тут транзакция, исключение? |
|||
21
nachinajushij
13.10.04
✎
16:02
|
Исходя из (18) Число не выбрасывает исключение!
|
|||
22
ОбезьянаС Гранатой
13.10.04
✎
16:03
|
(18) а если там "427pit"? то это число?
|
|||
23
Crew
13.10.04
✎
16:26
|
КодСимвола тебе поможет
|
|||
24
Барбариска
13.10.04
✎
16:27
|
Забавно )))
Вообще, проверка "на число" равносильна посимвольной проверке того, что каждый символ - это либо цифра, либо точка, причем точки не более 1 штуки. например, так: Стр=ИсходнаяСрока; Для сч=0 по 9 Цикл Стр=СтрЗаменить(Стр,Строка(Сч),"") КонецЦикла; Если (Стр="") или (Стр=".") Тогда ... Иначе ... КонецЕсли; |
|||
25
Crew
13.10.04
✎
16:28
|
(23)
+ соответственно разбор строки по символам и попадание в диапазон от 48(0) до 57(9). Если есть символ с кодом не из диапазона, тогда не число. |
|||
26
NS
13.10.04
✎
16:29
|
Минус еще может быть....
|
|||
27
Барбариска
13.10.04
✎
16:30
|
(26) точно, про минус забыла! )))
В задумчивости - что еще могла забыть? |
|||
28
GrayT
13.10.04
✎
16:33
|
Не вникая СокрЛП(Стр)=СокрЛП(Строка(Число(Стр))) ==> Число. Фиг его знает - пробовать надо
|
|||
29
Последний Будда
13.10.04
✎
16:33
|
Все можно сделать одним оператором.
|
|||
30
Барбариска
13.10.04
✎
16:34
|
(28) - нет, так не пойдет - попробуй например 0.0010000
|
|||
31
Последний Будда
13.10.04
✎
16:34
|
Или тема ветки - просто прикол?
|
|||
32
ОбезьянаС Гранатой
13.10.04
✎
16:59
|
(24)"1 000.00" -число?
з.ы. на самом деле, это (0) должен однозначно сформулировать, что такое "не число" вот тогда и будем решать задачу... и при чем тут исключение и транзакция??? |
|||
33
nachinajushij
13.10.04
✎
17:02
|
Число - это строка, корректно интерпретируемая функцией Число().
|
|||
34
nachinajushij
13.10.04
✎
17:05
|
Согласно (5) - в 8.0 функция Число() может вызвать исключение, в результате которой отменится транзакция (или я не прав?), что нам не подходит
|
|||
35
Барбариска
13.10.04
✎
17:05
|
(32) Число("1 000.00")=1 - так что только на плюсики/минусики в первой позиции можно согласиться в дополнение к цифрам и точке.
|
|||
36
NS
13.10.04
✎
17:13
|
Ну если это код... то какие проблемы? (19)
|
|||
37
Последний Будда
13.10.04
✎
17:23
|
Час работы 1с-ника стоит не меньше рубля. Теперь посчитайте насколько (0) нагрел конкурентов.
|
|||
38
Archon
13.10.04
✎
18:54
|
(37) Те, кто работает, попусту не болтают. А это по сути -- офф. ИМХО.
|
|||
39
G-Re
14.10.04
✎
09:58
|
При предложенной постановке задачи, можно(?) допустить, что на входе нет нулей в любых исполнениях(0, 0.000, -0000.00, +00.000 и тд), поэтому проще всего
Если Число(Строка)= 0 Тогда // не число Иначе // число КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |