0
- 14.06.2012 - 15:48
|
Ситуация следующая, проверяю символы по условию и оно не выполняется ни при каких значениях. Например, передается символ "П", код его 207, но условию пофигу, что 207>57 - проходит мимо. Что не так написал? Вот часть кода: КодСимвола = Число(КодСимв(Символ)); Если (КодСимвола<48) или (КодСимвола>57) Тогда СтрЗаменить(Номер,Символ," "); КонецЕсли; | |
1
- 14.06.2012 - 15:56
|
Че-то я уверен на 146%, что следующий код опровергнет сабж: Символ = "П"; КодСимвола = КодСимв(Символ); Если (КодСимвола<48) или (КодСимвола>57) Тогда Сообщить("Чудес не бывает"); КонецЕсли; | |
2
- 14.06.2012 - 16:00
| 0-US1C >Отладчиком пользоваться никто не учил? | |
3
- 14.06.2012 - 16:07
| (1) Да, этот код отработал нормально. Собственно и в своем я был уверен на 146%, пока обработка не выполнила то, что должна была. Тогда залез в отладчик и убедился, что условие ни разу не выполнилось. Хотя передавалось больше 800 символов, часть из которых не цифра (как в приведенном выше примере). Вот и хотелось бы понять, что моему условию не нравится. Даже дополнительно привел код символа к числу (хотя и без этого оно числом является). Убрал одно из условий, оставил только >57 для проверки. Пофигу. Если не верится, могу скриншот отладчика предоставить. | |
4
- 14.06.2012 - 16:09
| (2) Нет, никто. Сам научился. | |
5
- 14.06.2012 - 16:11
|
3-US1C >Покажи скриншот, но в нем должны быть видны на момент исполнения условия значения переменных: Символ КодСимв(Символ) Число(КодСимв(Символ) КодСимвола И еще. Нет ли перед этим кодом методов НачатьТранзакцию и/или Попытка? | |
6
- 14.06.2012 - 16:20
| (5) Транзакции и Попытки нет. Как скриншот в сообщение вставить пока не догоняю. | |
7
- 14.06.2012 - 16:22
|
Процедура КнопкаВыполнитьНажатие(Кнопка) ПолученныйКодСимвола = Число(КодСимвола("П")); Если (ПолученныйКодСимвола<48) или (ПолученныйКодСимвола>57) Тогда //СтрЗаменить(Номер,Символ," "); Сообщить("Ух тыж! Попадает!"); КонецЕсли; P.S. Ты стопроцентно уверен, что нет сюрпризов в твоей функции КодСимв ? | |
8
- 14.06.2012 - 16:23
| Выполни мой индусский код, и сообщи результат | |
9
- 14.06.2012 - 16:26
| (7) Уверен. Это не моя функция, а системная строковая функция. Возвращает конкретное число, в приведенном примере - 207. | |
10
- 14.06.2012 - 16:27
|
(8) Выполнить не удалось: ПолученныйКодСимвола = Число(КодСимвола<<?>>("П")); **(3)**: Функция не обнаружена (КодСимвола) При проверке модуля обнаружены синтаксические ошибки! | |
11
- 14.06.2012 - 16:35
| 6-US1C >Выложи скрин на radikal.ru и дай сюда ссылку | |
12
- 14.06.2012 - 16:35
| Стоп. У тя 8? Или 7.7? | |
13
- 14.06.2012 - 16:37
|
ОК. Процедура КнопкаВыполнитьНажатие(Кнопка) ПолученныйКодСимвола = Число(КодСимв("П")); Если (ПолученныйКодСимвола<48) или (ПолученныйКодСимвола>57) Тогда //СтрЗаменить(Номер,Символ," "); Сообщить("Ух тыж! Попадает!"); КонецЕсли; | |
14
- 14.06.2012 - 16:45
|
(11) Загрузил скриншоты 3-х шагов. Первый - перед условием, второй - на проверке условия и третий - на концеЕсли: http://i035.radikal.ru/1206/9b/e1de5c2b1152.jpg http://s15.radikal.ru/i188/1206/aa/cfca751c072e.jpg http://s019.radikal.ru/i607/1206/f7/4deeb10c666c.jpg | |
15
- 14.06.2012 - 16:49
| 14-US1C > галочку там надо было снимать (уменьшать размер до 640) | |
16
- 14.06.2012 - 16:53
|
(13) Да, это работает, собственно как и предыдущий тестовый пример. Скажу больше, когда я закомментировал метод СтрЗаменить() и добавил Сообщить: КодСимвола = Число(КодСимв(Символ)); Если (КодСимвола < 48) или (КодСимвола > 57) Тогда Сообщить("Работает"); //СтрЗаменить(Номер,Символ," "); КонецЕсли; у меня условие стало выполняться. Парасятина какая-то. | |
17
- 14.06.2012 - 16:56
|
(15) Исправился: http://i020.radikal.ru/1206/cf/d8a162d3ef60.jpg http://s14.radikal.ru/i187/1206/3b/d377fcb4a461.jpg http://s018.radikal.ru/i527/1206/f6/7605fcd7d7f2.jpg | |
18
- 14.06.2012 - 16:58
|
Чудес не бывает что и требовалось доказать ЗЫ. небось обработку то не сохранил перед этим | |
19
- 14.06.2012 - 16:58
| +1 вот если ты раскомментируешь СтрЗаменить() и условие перестанет выполняться, тогда и поговорим | |
20
- 14.06.2012 - 17:02
|
17-US1C >По скриншотам я не вижу, что условие не выполняется. Исправь одну строчку: Номер = СтрЗаменить(Номер,Символ," "); | |
21
- 14.06.2012 - 17:02
|
А, все понял. Сам дурак. Я не получал от СтрЗаменить() ничего и условие (даже истинное) проходило мимо. Типа тебе все равно ничего не нужно. Как только сделал: КодСимвола = Число(КодСимв(Символ)); Если (КодСимвола < 48) или (КодСимвола > 57) Тогда Номер = СтрЗаменить(Номер,Символ," "); КонецЕсли; все заработало. Всем спасибо за помощь!!! | |
22
- 14.06.2012 - 17:04
| Йопрст. Точно же ) Это же функция, а не процедура. | |
23
- 14.06.2012 - 17:11
| Не зря студентов я программировать учил - чужие ошибки вижу по наитию... | |
24
- 14.06.2012 - 17:44
|
(0) Функция ОчиститьНомер(Номер) RegExp = CreateObject("VBScript.RegExp"); RegExp.Global = -1; RegExp.Pattern = "[^0-9]"; Возврат Число(RegExp.Replace(Номер, "")); КонецФункции и не морочься с Если :)) | |
25
- 14.06.2012 - 17:50
| (24) Чем твоё решение лучше решения, приведённого в топике? | |
| Интернет-форум Краснодарского края и Краснодара |