ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
LUCIAN Автор Сообщений: 343 Откуда: Лида Беларусь Дата регистрации: 25.03.2008 |
Как с помощью vfp получить остаток от деления числа типа 1121111130141200000000132818113474
на 97,это для проверки правильности номера счёта IBAN. |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Библиотеку длинных чисел надо, или столбиком.
|
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Вот статья. Делят на 97 (;Ж
www.liveinternet.ru |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
|
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
2leonid
Ведь имеется и ассемблерный текст для кодов этих загадочных байтов. Интересно, если используются небольшое количество команд процессора (не все множество команд x86, и/или только независимые что-ли от положения в адресном пространстве... Нельзя ли написать "простенькй" транслятор текста ассемблерного кода (подпрограмку, возвращающую набор байтов для этого ассемблерного текста), причем только этих любимых/уместных команд, (может даже с переобозначением одной строкой некоторых однообразных серий, типа PUSH... POP), чисто для использования в фоксе?... Ну, чтобы не наблюдать набор байтов, а наблюдать исходный ассемблерный код, править... |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Боюсь, что "простенький" транслятор текста окажется не таким уж и простеньким. И писать его на фоксе совсем неохота, учитывая, что в интернете есть куча подобных трансляторов. О том, который я использовал, я писал вот тут: forum.foxclub.ru Если действительно кто-то хочет посмотреть ассемблеровские исходники, могу привести, только уж очень сомневаюсь, что кому-то захочется их править и заново компилировать. |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> могу привести, только уж очень сомневаюсь, что кому-то захочется их править и заново компилировать
Если не приводить, то никто и не заинтересуется, и не узнает как устроено... Компилировать не ломанутся, но "воспроизводство" отношений, программ, ивобще всего - оно полезно. Не все же знают, что фокс - это не единственный язык, или си, или ассемблер, и что пару байтов можно сложить не только фоксом. А тут только "магическое заклинание" чарр+чарр... |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Любопытно, а есть ли консольные утилиты, выполняющие такого рода операции? Ведь наверняка проверку 30-значного расчетного счета уже давно все выполняют, где используется международная система кодирования расчетных счетов. Консольная утилита позволила бы выполнять такого рода проверку из любой среды фактически, да хоть даже из командной строки.
|
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Ну и зачем для этого консольная утилита?
Ты похоже все еще где-то в 90-х живешь Исправлено 1 раз(а). Последнее : spinz, 08.06.17 08:05 |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
LUCIAN Автор Сообщений: 343 Откуда: Лида Беларусь Дата регистрации: 25.03.2008 |
Всем спасибо. Проверил функцию предложенную leonid
в результате получил 1 т.е. номер счёта IBAN верный. С 04.07.2017 в РБ переходят на международную структуру банковского номера счета(IBAN). Так как 3 и 4 символы этого счета контрольные цифры поэтому возник вопрос как проверить правильность счета.На польском сайте нашёл такой алгоритм: 1.Рассмотрите всю строку номера IBAN (включая код страны). Этот номер должен быть написан без пробелов. 2.Проверьте длину этой строки в контексте той или иной страны (в Польше(в РБ тоже), номер банковского счета в IBAN будет состоять из 28 символов). 3.Перенесите первые 4 символа IBAN на конец. 4.Каждую букву в этой строке заменить на 2 цифры следующим образом:«А» заменить на «10», «B» на «11» ... «Z» заменить «35». Для кода «PL»(«BY») мы должны получить число 2521(1134),так как «Р» преобразуется в 25, и «L» 21. 5.В результате мы получили строку цифр. Мы рассматриваем полученную строку как число и вычисляем остаток от деления на число 97. 6.Если остаток равен 1, то контрольная сумма верна. Приведенное выше число 1121111130141200000000132818113474 получено от счета IBAN "BY74BLBB30141200000000132818" Поэтому под этот алгоритм придется писать код, если никто не укажет где найти. Исправлено 2 раз(а). Последнее : LUCIAN, 08.06.17 09:13 |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Интересный алгоритм вычисления остатка alexandrerodichevski.chiappani.it
"" Чтобы облегчить деление чрезмерно длинных номеров, можно расчленить численную строку на малые части, и вычислить остаток деления первой части на 97, после этого составить новую численную строку из остатка деления и второй части, и вычислить остаток деления этого номера на 97, и так далее. |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
ry Сообщений: 2114 Дата регистрации: 24.09.2007 |
Делал для 1С, алгоритм несложный, код тоже. Думаю, на фокспро это просто будет реализовать. Вот здесь www.morfoedro.it есть хорошее описание и пример деления итоговой строки на части с их последовательным делением на 97, что позволяет не оперировать большими числами (т.е. не вылезать за ограничения integer). Пример короткого кода оттуда же (можно взять за основу и переделать для фокса): Здесь infostart.ru пример для 1С 8, для 7.7 делал немного по-другому, матрицу заменял на строку символов, код короче и наглядней, но под рукой его нет - на другой работе. з.ы. Оказывается, у of63 ссылка на ту же информацию, но с другим адресом. Исправлено 1 раз(а). Последнее : ry, 08.06.17 10:01 |
Проверка корректности IBAN | |
---|---|
LUCIAN Автор Сообщений: 343 Откуда: Лида Беларусь Дата регистрации: 25.03.2008 |
В решениях foxclub нашёл такое
Исправлено 2 раз(а). Последнее : LUCIAN, 08.06.17 10:50 |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Вроде как и для FPD прокатывает?
Окромя message box, но это уже не принципиально. |
Re: Проверка корректности IBAN | |
---|---|
LUCIAN Автор Сообщений: 343 Откуда: Лида Беларусь Дата регистрации: 25.03.2008 |
В выше представленном коде этот пункт алгоритма выполняется только для страны с кодом GB.Поэтому для проверки длины добавил другие страны
Исправлено 1 раз(а). Последнее : LUCIAN, 09.06.17 12:45 |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
BOBAN Сообщений: 625 Откуда: Солигорск Дата регистрации: 05.07.2004 |
Функция RemoveBlanks выжигает мозг. ChrTran(..,[ ],[]) не пойдет ?
|
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Несколько избыточно - скажем проверяешь первые 4 символа попарно на буквы/числа, а потом их же снова в составе общей строки на "буква или число"...
Явная ошибка в проверке GB счетов (а вообще надо читать стандарт - судя по всему функцию писали именно англичане, раз пробили только "свои" ограничения - может для других стран тоже есть обязательная буквенная часть). Там должен быть вызов ALPHA(st[3]) а не ISALPHA(st[3]) - который проверяет только ПЕРВЫЙ символ строки, а не всю её. Чуть быстрее, короче и IMHO читабельнее будет такая реализация вспомогательных функций:
Всё ж лучше когда циклы крутит сам фокс внутри себя, в сишной реализации, нежели когда он их "интерпретирует" из фоксовых FOR... Само "вычисление остатка" тоже не стоит крутить в фоксовом цикле по 1 элементу - хотя бы уж по 8 за раз брать, как по ссылкам делают - с 2-мя цифрами от предыдущего шага будет 10, тут точности фокса хватит ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 08.06.17 16:16 |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Сойдет. Вместо самой этой совершенно ненужной RemoveBlanks.
------------------ Лень - это неосознанная мудрость. Исправлено 3 раз(а). Последнее : ssa, 08.06.17 16:35 |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Вообще есть вариант "сделать от обратного" первый шаг - т.е. тупо выкинуть все "неподходящие" символы из строки (не цифры и латиницу), и уж смотреть - вписывается ли она в заданные рамки или нет Двойной Chrtran проделывает такой фокус как "оставить только заданные символы".
Как и курсор Впрочем, я полагаю это чисто для примера тут курсор описан - реально, поди, какая-то "таблица стран" из основной БД используется, т.е. она просто "дополняется" полем размера сего кода... ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 08.06.17 16:41 |
Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Именно! Кстати, isEngChar и ALPHA при ближайшем рассмотрении дублируют друг друга... Функции ALPHA() как-то по барабану сколько ей скормили символов. ------------------ Лень - это неосознанная мудрость. Исправлено 1 раз(а). Последнее : ssa, 08.06.17 16:49 |
© 2000-2024 Fox Club  |