КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Примечание. В цикле применен еще один прием — нижнее граничное значение задается с помощью функции Len, которая возвращает длину текстового фрагментаВ цикле применен еще один прием — нижнее граничное значение задается с помощью функции Len, которая возвращает длину текстового фрагмента. Другими словами, если номер кредитной карты состоит из 11 цифр, этот код выполняется 11 раз (один раз для каждой цифры).
■ В строках 8—9 извлекается цифра в текущей позиции, на которую указывает счетчик цикла. Функция Mid позволяет вырезать одну цифру. ■ В строке 10 проверяется, находится ли полученная цифра в четной или нечетной позиции, считая от конца номера. ■ Строки 11—17 выполняются, только если позиция цифры не кратна двум, считая от конца номера. В этом случае ее следует удвоить (строка 11). Если получилось двузначное число, его цифры нужно сложить (строки 13—15). ■ В строке 19 текущее число добавляется к промежуточному итогу. Если вы находитесь в четной позиции, число не менялось. Если вы в нечетной позиции, число было удвоено и скомбинировано. ■ В строке 20 гарантируется переход из четной позиции в нечетную позицию (и обратно). ■ В строке 21 выполняется переход к строке 6 и повторение цикла для следующей цифры в номере кредитной карты. ■ В строках 22—26 проверяется окончательный итог. Если он кратен 10, номер допустимый. Для проверки применяется операция Mod, выполняющая деление и извлекающая остаток от деления нацело (Если остатка нет при делении числа на 10, вы знаете, что оно без проблем делится нацело.) Может потребоваться некоторое время для того, чтобы разобраться в работе функции от начала до конца и выяснить точно, что происходит, но в конце концов все это относится к основным элементам языка VB, таким как условия, циклы и переменные. Если вы действительно хотите изучить данный пример, его можно посмотреть в действии с помощью средств отладки. После завершения создания функции, подобной ValidateCard, ее можно вызвать для проверки соответствия номера кредитной карты. Далее приведен пример, реагирующий на ввод данных кредитной карты в текстовое поле, названное CardNumber: Private Sub CardNumber_BeforeUpdate(Cancel As Integer) If ValidateCard(CardNuraber) Then MsgBox "Your card is valid," Else. MsgBox "Your card is invalid. " & _ "Did you forget a number, or are you trying to cheat us?" Cancel = True End If End Sub Для проверки выполните приведенный код и введите один из номеров ваших кредитных карт в поле CardNumber, как показано на рис. 17.3. Рис. 17.3.Эта форма демонстрирует работу функции Validate Card в форме AddCreditCard(вставка кредитной карты) из БД Boutique Fudge . Когда бы ни менялось поле CardNumber,процедура проверяет его допустимость и отменяет изменения, если значение не приемлемо
|