Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проверка ключа банковского счета??? / 2 сообщений из 2, страница 1 из 1
28.11.2003, 10:21
    #32337457
aleks26rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка ключа банковского счета???
Граждане, может у кого завалялся алгоритм или на худой конец инструкция по проверке ключа 20ти значного счета по бику банка???
кинте, если не сложно, в мыло...
aleks26rus@mail.ru
isq
: 122303922
...
Рейтинг: 0 / 0
28.11.2003, 16:32
    #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
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проверка ключа банковского счета??? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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