1 Jun 2011, 7:32am
Ámítástechnika: chec checker code delphi iban international bank account programming validating validator
by kga
kga
Hozzászólások kikapcsolva

IBAN szám ellenőrzése Delphi -vel

Az eredeti ellenőrző algoritmust nem nagyon írtam át, csak beletettem az országkódokat.

function ChangeAlpha(input: string): string;
var a: Char;
begin
  Result := input;
  for a := 'A' to 'Z' do
  begin
    Result := StringReplace(Result, a, IntToStr(Ord(a) - 55), [rfReplaceAll]);
  end;
end;

function CalculateDigits(iban: string): Integer;
var v, l: Integer;
    alpha: string;
    number: Longint;
    rest: Integer;
begin
  iban := UpperCase(iban);
  if Pos('IBAN', iban) > 0 then
  Delete(iban, Pos('IBAN', iban), 4);
  iban := iban + Copy(iban, 1, 4);
  Delete(iban, 1, 4);
  iban := ChangeAlpha(iban);
  v := 1;
  l := 9;
  rest := 0;
  alpha := '';
  try
  while v <= Length(iban) do
  begin
    if l > Length(iban) then
    l := Length(iban);
    alpha := alpha + Copy(iban, v, l);
    number := StrToInt(alpha);
    rest := number mod 97;
    v := v + l;
    alpha := IntToStr(rest);
    l := 9 - Length(alpha);
  end;
  except
  rest := 0;
  end;
  Result := rest;
end;

function IndexOf(stringArray: array of string; partString: String): integer;
var i: Integer;
begin
  Result := -1;
  for i:=0 to Length(stringArray) do
  begin
    if stringArray[i] = partString then
    begin
      Result := i;
      break;
    end;
  end;
end;

function CheckIBAN(iban: string; justcountrycode: boolean): Boolean;
const countrycodes: array[1..54] of string = ('AD','AE','AL','AT','BA','BE','BG','CH','CY','CZ','DE','DK',
       'EE','ES','FI','FO','FR','GB','GE','GI','GL','GR','HR','HU','IE','IL','IS',
       'IT','KW','KZ','LB','LI','LT','LU','LV','MC','ME','MK','MR','MT','MU','NL',
       'NO','PL','PT','RO','RS','SA','SE','SI','SK','SM','TN','TR');

begin
  Result := true;
  iban := StringReplace(iban, ' ', '', [rfReplaceAll]);
  iban := StringReplace(iban, '-', '', [rfReplaceAll]);
  if IndexOf(countrycodes, Copy(iban,1,2)) < 0 then
  begin
    Result := false;
    Exit;
  end;

  if justcountrycode then Exit;
  if CalculateDigits(iban) = 1 then
  Result := True
  else
  Result := False;
end;
0

 
← Hangulat zene  IBAN szám ellenőrzése C# -ban →
 
  • Licensz

    Blog under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 License
    Creative Commons License

  •  
    Copyright © 2011. Gábor Keve.
    Mindennapi gondolatmorzsák
     

     

    Mindennapi gondolatmorzsák

    Képek-, gondolatok-, és minden más!
  • Oldalak

    • Rólam
    • Statisztika
  •  
  • Cimkefelhő

    építkezés étcsokoládé ónos eső önértékelés 12 óra 2011 aeneis apa ösztön Arrows & Anchors big brother Buttermilk chilli emlős fiatal hármashatár hanglat hangular indukciós Javier Bardem kolbász laptop lassi macskaszőr mesterek metált bírod? munkakedv nagymama nincs nyálkás orosz padlizsánkrém pantomim paradise quesadilla rendeződött Schiller sikerek szőnyeg széle természet torokfájás trüffel vargánya vers vietnam Why so sad