Форум » Clipper » Как такое может быть ? » Ответить

Как такое может быть ?

Dima: В бровсе пользователь заполняет колонку с количеством. В случае если это штучный товар , программа не дает ввести дробное количество. Но иногда находятся люди которые эту проверку обходят загадочным образом. В начале я не поверил. Но скачав вчерашнюю базу сам в этом убедился , увидев дробные кол-ва там где их быть не должно. Вот такой примерно код [pre2] cls n:=0 @ 10,10 get n picture "999999.999" valid test(n) read ? n wait ************** Func test(n) local ret:=.t. if right(transform(n,"999999.999"),4)#".000" alert("BAD") ret:=.f. endif return ret [/pre2]

Ответов - 7

Andrey: Dima пишет: Но иногда находятся люди которые эту проверку обходят загадочным образом. Да эти юзера кого хошь достанут. И у меня такое бывает.... Даже не пытался разбираться у себя.

Pasha: Dima пишет: Но иногда находятся люди которые эту проверку обходят загадочным образом. Мне этот фокус показывали еще в 90-е годы. Хитрые юзера просекли, что, если нажать alt+c, то программа закроется, и сумма в поле сохранится. Правда, это сработает, если редактируется не промежуточная переменная, а непосредственно поле.

Dima: Pasha пишет: Правда, это сработает, если редактируется не промежуточная переменная, а непосредственно поле. Да у меня редактируется поле , но так же и объявлено Setcancel(.f.)


Dima: Pasha Ты навел меня на мысль ;) Кажется понял в чем дело. У меня в программе если зайти в нее с мастер паролем , у юзера появляется возможность выбросить другого юзера из программы. После того как инициирован выброс , "жертва" получает: Dbcommitall() close all quit И в этом случае в таком поле может оказаться дробное кол-во , если юзер ввел именно дробное кол-во , но VALID еще не сработал.

Pasha: Есть еще волшебная кнопка reset

Сыроежка: На мой взгляд в программе имеется неправильный дизайн. Если вы не хотите, чтобы была дробная часть, то и не надо вообще предоставлять шаблон ввода, позволяющий вводить дробные числа. То есть в зависимости от некоторых заранее определенных условий вы должны предоставлять пользователю тот или иной шаблон ввода данных, который не позволит ему нарушить эти условия.

Dima: Сыроежка пишет: То есть в зависимости от некоторых заранее определенных условий вы должны предоставлять пользователю тот или иной шаблон ввода данных, который не позволит ему нарушить эти условия. Уже переделал.



полная версия страницы