Ver Mensaje Individual
  #3  
Antiguo 02-12-2014
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Reputación: 16
engranaje Va por buen camino
Mi propuesta es tratar la cadena ignorando todos los caracteres que no sean números devolviendo un mensaje de error si no hay 20 números exactos (longitud de una cuenta bancaria española válida) y devolviendo la cadena con 20 números en caso contrario.

Código Delphi [-]
Function cadenaACuentaEsp20digitos(candidata:string):string;
var
 i:integer;
begin
  for i := 0 to length(candidata) do
  begin
    if candidata[i] in ['1','2','3','4','5','6','7','8','9','0']  then
      result := result + candidata[i];
  end;

  if length(result) <> 20 then
    result:='No es una cuenta bancaria española válida'

end;

Una vez tienes la cadena de 20 números que entendemos que es un número de cuenta válido (se puede comprobar el dígito de control para asegurarnos). Si lo quieres pasara a un iban español Válido toca añadilre ESXX donde xx son los dígitos de control resultantes de aplicar el algoritmo correspondiente a los 20 digitos de la cuenta mas el código del pais (ES en el caso de españa).
Entiendo que el algoritmo para el cálculo de los dígitos de control ya lo tienes y que el problema se te planteaba solo a la hora de obtener un número de cuenta válido a partir de tus datos bancarios actuales.
Responder Con Cita