|
Проблеммка
|
|||
---|---|---|---|
#18+
Специалисты! выведете из затруднения n_form='' n_form=00254 Local kv_o,kvlo1 kvlo=Len(ALLTRIM(n_form)) kvlo1=val(n_form) kv_o=Len(ALLTRIM(STR(kvlo1))) kv_o - дает 3, т.е. выкидывает 1-е 2 ноля как правильно организовать чтобы результат был 5, т.е. подсчитывлись все знаки ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 14:13 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
Не переводить строку в число. Как же еще. Откуда FoxPro вообще узнает, что у числа 254 должны быть какие-то ведущие нули? И почему этих нулей должно быть ровно 2, а не 3 или 4? Либо опиши всю задачу целиком, а не принятый способ решения. Почему возникла необходимость переводить строковую величину в число, а потом анализировать именно переведенное, а не исходное значение? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 14:39 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
Nikita_2Специалисты! выведете из затруднения n_form='' n_form=00254 Local kv_o,kvlo1 kvlo=Len(ALLTRIM(n_form)) kvlo1=val(n_form) kv_o=Len(ALLTRIM(STR(kvlo1))) kv_o - дает 3, т.е. выкидывает 1-е 2 ноля как правильно организовать чтобы результат был 5, т.е. подсчитывлись все знаки 1. А вообще откуда должно взяться такое число 00254 ? Посмотри, что в переменной n_form находится - 254, без ведущих нулей. 2. Задача в чем? Просто убедиться, что ведущие нули система не хранит? Тогда считай, что случилось )) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 15:30 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
Дело в том что: номера бланков строгой отчетности начинаются с 0, 00254785, 00254786 и т.д. при заполнении бланка на компе номер бланка вставляется в ручную, (перем. n_form (С), походу рботы заметил что иногода пользователи второпях печатают что-то вроде 002в547786 т.е номер с ошибкой, вот и решил проконтролировать корректность ввода следующим образом: kvlo=Len(ALLTRIM(n_form)) kvlo1=val(n_form) kv_o=Len(ALLTRIM(STR(kvlo1))) if kvlo<>kv_o messagebox('Не корректный номер документа. ') return endif т.е при проверке kvlo не должно быть = kv_o, в принципе все работает, кабы не было впереди нолей. Понимаю что профи как то по другому решают эту задачу, сам не программист , скажем любитель и тем не менее...? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 15:50 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
"т.е при проверке kvlo не должно быть = kv_o, в принципе........" ошибся читать как "т.е при проверке kvlo должно быть = kv_o, в принципе........" далее по тексту ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 15:57 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
так поле-то у тебя строковое. А значит, его перед сохранением и надо проверять, пока оно не стало числом. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 16:49 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
Nikita_2Дело в том что: номера бланков строгой отчетности начинаются с 0, 00254785, 00254786 и т.д. при заполнении бланка на компе номер бланка вставляется в ручную, (перем. n_form (С), kvlo1=val(n_form) Это убери и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 16:51 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
Хорошо, пойдем другим путем : как проверить строковое поле содержащее цифры на наличие нецифровых символов? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 16:59 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
Nikita_2Хорошо, пойдем другим путем : как проверить строковое поле содержащее цифры на наличие нецифровых символов? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 18:42 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 18:43 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
Можно проще: Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 18:45 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
Спасибо. Впредь дурачине наука. (Это я себе). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2008, 19:10 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
> Автор: Dag > MyString='455885A74 2' > ?LEN(ALLTRIM(CHRTRAN(MyString, '0123456789', ' '))) Пробелы, вопрошающему, я так понимаю, тоже не нужны Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2008, 05:28 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
> Автор: Dima T > Можно проще: > > lcCifra = '12345' > > if empty(chrtran(lcCifra, '1234567890', '')) > ? 'Цифры' > else > ? 'Буквы' > endif Те же пробелы. Думаю, вместо empty? правильнее использовать lcCifra==''. Конечно сначала нужно убрать ведущие, пробелы: lcCifra = '12345' lcCifra=alltrim(lcCifra) if (chrtran(lcCifra, '1234567890', ''))=='' ? 'Цифры' else ? 'Не (только) цифры' endif Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2008, 05:32 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
проще при наборе проверять последний введеный символ если не корректный - удалять и менять текущиию позицию каретки в поле ввода причем поскольку провяряются цифры которые в таблице символов лежат рядом один за одним достаточно проверить на больше - меньше "0" и "9" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2008, 13:35 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
> проще при наборе проверять последний введеный символ > если не корректный - удалять и менять текущиию позицию каретки в поле > ввода > причем поскольку провяряются цифры которые в таблице символов лежат > рядом один за одним > достаточно проверить на больше - меньше "0" и "9" Ну если мы говорим о контроль при вводе - то проще задать маску ввода 99999999 и не нужно сравнивать на больше меньше. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2008, 13:49 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
Galyamov Rinat > проще при наборе проверять последний введеный символ > если не корректный - удалять и менять текущиию позицию каретки в поле > ввода > причем поскольку провяряются цифры которые в таблице символов лежат > рядом один за одним > достаточно проверить на больше - меньше "0" и "9" Ну если мы говорим о контроль при вводе - то проще задать маску ввода 99999999 и не нужно сравнивать на больше меньше. Как по мне - самый правильный ответ! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2009, 13:05 |
|
Проблеммка
|
|||
---|---|---|---|
#18+
ну разве что дополнить следующим: установить для поля ввода св-во Format "K" и LostFocus() event что-то типа: Код: plaintext 1.
, что избавит от необходимости ввода лидирующих нулей ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2009, 15:26 |
|
|
start [/forum/topic.php?fid=41&msg=35616585&tid=1586614]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 131ms |
0 / 0 |