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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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
  #2  
Antiguo 02-12-2014
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 20
Delphitest Va por buen camino
Muchas gracias a todos,

esto último suena bien pero mis conocimientos no dan para tanto...

Me quedo con la opción sencilla de de newtron

Código Delphi [-]
Cuenta:=StringReplace(Cuenta, '/', '', [rfReplaceAll]);

Con esto saneo todas las cuentas y me quedo con los 24 caracteres que necesito.

Quiero dar un paso más si es posible.

El resultado es por ejemplo. ES9999999999999999999999

¿Como podría hacer para hacer grupos de 4 caracteres separados por un espacio en blanco?

Sería para obtener ES99 9999 9999 9999 9999 9999
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #3  
Antiguo 02-12-2014
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.242
Poder: 22
ElKurgan Va camino a la fama
Código Delphi [-]
function FormatearCuenta(const s: string): string;
begin
  // Espero siempre 24 dígitos
  If length(s) <> 24 then
    Result := ''
  else
    Result := 
      Copy(s, 1, 4) + ' ' + 
      Copy(s, 5, 4) + ' ' 
      Copy(s, 9, 4) + ' ' 
      Copy(s, 13, 4) + ' ' 
      Copy(s, 17, 4) + ' ' 
      Copy(s, 21, 4) ; 
end;

Por supuesto, hay formas más eficientes de hacerlo, pero como idea vale

Saludos
Responder Con Cita
  #4  
Antiguo 02-12-2014
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 20
Delphitest Va por buen camino
Muchas gracias, así da gusto

He añadido los + que faltan porque me daba error pero una vez puestos todo OK

Ahora que ya tengo el formato deseado quiero rizar el rizo, jejejej

Abro otro hilo para no mezclar preguntas diferentes.

Gracias de nuevo a todos por vuestra ayuda.
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
Respuesta


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 07:25:31.


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