Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 02-12-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Código Delphi [-]
function Modulo97(s: string): integer;
var
  v, l : integer;
  alpha : string;
  number : longint;
begin
  v := 1;
  l := 9;
  Result := 0;
  alpha := '';

  while (v <= Length(s)) do
  begin
     if (l > Length(s)) then
        l := Length(s);
     alpha := alpha + Copy(s, v, l);
     number := StrToInt(alpha);
     Result := number mod 97;
     v := v + l;
     alpha := IntToStr(Result);
     l := 9 - Length(alpha);
  end;
end;

function ChangeAlpha(input: string): string;
var
  a : char;
begin
  /// A -> 10, B -> 11, C -> 12 ...
  Result := input;
  for a := 'A' to 'Z' do
  begin
     Result := StringReplace(Result, a, IntToStr(Ord(a) - 55), [rfReplaceAll]);
  end;
end;

function IBANValido(IBAN: string): boolean;
var
  l : integer;
begin
  Result := True;

  IBAN := UpperCase(IBAN);

  // Compruebo que sean caracteres válidos
  for l := 1 to Length(IBAN) do
     if (not (IBAN[l] in ['A'..'Z', '0'..'9'])) then
        Result := False;

  if (Result) then
  begin
     // Paso los primeros 4 digitos al final (Pais + Control)
     IBAN := IBAN + Copy(IBAN, 1, 4);
     Delete(IBAN, 1, 4);

     // Convierto letras a digitos
     iban := ChangeAlpha(IBAN);

     // Si el resto de modulo 97 es 1 es una cuenta válida
     Result := (Modulo97(IBAN) = 1);
  end;
end;

procedure Limpia_IBAN;
var
  l : integer;
  TmpIBAN : string;
begin
  while ??? do
  begin
     // Cargo variable con la IBAN que estoy recorriendo
     IBAN := ???;

     // Tomo solo los caracteres validos
     IBAN := UpperCase(IBAN);
     for l := 1 to Length(IBAN) do
        if ((IBAN[l] in ['A'..'Z', '0'..'9'])) then
           TmpIBAN := TmpIBAN + IBAN[i];
     
     if IBANValido(TmpIBAN) then
     begin
        // IBAN correcto y limpio. Actualizo el dato en la base de datos
        ???
     end
     else
     begin
        // Algo no está bien con el IBAN. Mensaje, Log, ...
        ShowMessage('Revisar: ' + IBAN);
     end;
  end;
end;
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cálculo de los dígitos IBAN Troffed Trucos 9 26-07-2020 18:08:27
Cálculo / Validación del IBAN Angel.Matilla C++ Builder 17 05-02-2014 13:12:29
Dar formato a una cadena con vocales tildadas y otros caracteres noob Varios 8 25-02-2009 17:15:09
Como leer un Email en formato HTLM y que se muestren las imagenes y todo su formato jesus02018 Internet 0 28-12-2008 11:22:10
Como calcular codigo IBAN cinecito Varios 2 11-05-2004 18:49:44


La franja horaria es GMT +2. Ahora son las 14:47:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi