powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проверка ключа банковского счета???
2 сообщений из 2, страница 1 из 1
Проверка ключа банковского счета???
    #32337457
aleks26rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Граждане, может у кого завалялся алгоритм или на худой конец инструкция по проверке ключа 20ти значного счета по бику банка???
кинте, если не сложно, в мыло...
aleks26rus@mail.ru
isq
: 122303922
...
Рейтинг: 0 / 0
Проверка ключа банковского счета???
    #32338031
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там еще ПЗН используется кроме БИК

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
function ValidateAccount(const acc, pzn, bik:string):boolean;

        function CalcAccKey(const Account, BIK, PZN:string; const WithKey:boolean):integer;

                  function CalcKey(const Acc, Mask, Koef:string):integer;
                  var i:integer;
                  begin
                    result:= 0 ;
                    for i:= 1  to length(Mask) do
                      result:=result+(StrToInt(Acc[i])*StrToInt(Mask[i])*StrToInt(Koef[i]));
                  end;
        const
          AccMask1='11111111011111111111';
          AccMask2='11111111111111111111';
          AccKoef ='71371371371371371371';
          BikMask1='000000111';
          BikKoef1='000000713';
          BikMask2='000011000';
          BikKoef2='000013000';

        var AccMask, BikMask, BikKoef, sum:string;
        begin
          if length(PZN)<> 2  then raise Exception.Create('PZN пустой. Возможно, не указан банк');
          if WithKey then AccMask:=AccMask2 else AccMask:=AccMask1;
          if (PZN<>'00') and (PZN<>'10') then
          begin
            BikMask:=BikMask1;
            BikKoef:=BikKoef1;
          end
          else
          begin
            BikMask:=BikMask2;
            BikKoef:=BikKoef2;
          end;
          result:=CalcKey(Account, AccMask, AccKoef)+CalcKey(BIK, BikMask, BikKoef);
          sum:=IntToStr(result);
          result:=StrToInt(sum[length(sum)])* 3 ;
        end;

begin
  if CalcAccKey(acc, bik, pzn, true)<> 0  then
  begin
    Application.MessageBox(PChar('Счет не ключуется'), PChar(Application.Title), MB_OK + MB_ICONSTOP);
    result:=false;
    exit;
  end;
  result:=true;
end;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проверка ключа банковского счета???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]