Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-05-2008
gerardus gerardus is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
gerardus Va por buen camino
No, desde luego, mucho mejor así.
Responder Con Cita
  #2  
Antiguo 25-07-2020
elmorsa elmorsa is offline
Registrado
 
Registrado: jul 2020
Posts: 5
Poder: 0
elmorsa Va por buen camino
Hola A todos,


Soy muy malo en el tema de caracteres a string y viceversa con mod y TIntger, assign, etc.


Alguien sabe si hay (y donde) un codigo en Delphi Basico que dado un pais y la antigua Cuenta me devuelva el IBAN completo?



Un ejemplo Ficticio:


Pais: ES, CCC: 2010 1234 19 2102365120 = ES7420101234192102365120


Desde ya, muchisimas gracias.
Responder Con Cita
  #3  
Antiguo 25-07-2020
elmorsa elmorsa is offline
Registrado
 
Registrado: jul 2020
Posts: 5
Poder: 0
elmorsa Va por buen camino
He conseguido hacerlo en Delphi BASICO.



Como dije antes, no tengo ni idea, o sea que esto puede ser muy malo...


Funciones para transformar pais+CCC en IBAN:


Function Modulo97(const 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 ControlIBAN(const cuenta, Pais: string): string;
var
i, j: integer;
m: int64;
l: Integer;
t: string;
s: string;

function LetterToDigit(C: Char): string;
const
a: char = 'A';
var
d: byte;
begin
result := C;
if C in ['A'..'Z'] then
begin
d := (byte(C)-byte(a)) + 10;
result := IntToStr(d);
end;
end;

begin
try
t := Cuenta + Pais + '00';
s := '';
j := Length(t);
for i := 1 to j do
s := s + LetterToDigit(t[i]);
l:= Modulo97(s);
m:= int64(l);
i := 98 - m;
result := IntToStr(i);
if i < 10 then result := '0' + result;
except
result :='';
end;
end;


Function FormateaIBAN(const cuenta, Pais: string): string;
begin
result := Pais + ControlIBAN(Cuenta, Pais) + Cuenta;
end;
Responder Con Cita
  #4  
Antiguo 25-07-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, no olvides usar las etiquetas para código, ejemplo:


Responder Con Cita
  #5  
Antiguo 25-07-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tu código con la etiqueta DELPHI:

Código Delphi [-]
Function Modulo97(const 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 ControlIBAN(const cuenta, Pais: string): string;
var
  i, j: integer;
  m: int64;
  l: Integer;
  t: string;
  s: string;

  function LetterToDigit(C: Char): string;
  const
    a: char = 'A';
  var
    d: byte;
  begin
    result := C;
    if C in ['A'..'Z'] then
    begin
      d := (byte(C)-byte(a)) + 10;
      result := IntToStr(d);
    end;
  end;

begin
  try
    t := Cuenta + Pais + '00';
    s := '';
    j := Length(t);
    for i := 1 to j do
      s := s + LetterToDigit(t[i]);
    l:= Modulo97(s);
    m:= int64(l);
    i := 98 - m;
    result := IntToStr(i);
    if i < 10 then result := '0' + result;
  except
    result :='';
  end;
end;

Function FormateaIBAN(const cuenta, Pais: string): string;
begin
  result := Pais + ControlIBAN(Cuenta, Pais) + Cuenta;
end;
Responder Con Cita
  #6  
Antiguo 26-07-2020
elmorsa elmorsa is offline
Registrado
 
Registrado: jul 2020
Posts: 5
Poder: 0
elmorsa Va por buen camino
Perdón No sabía que existía esta formalidad... Es muy buena... Gracias por informarme.

Última edición por Casimiro Notevi fecha: 26-07-2020 a las 18:08:14.
Responder Con Cita
  #7  
Antiguo 26-07-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues ya lo sabes
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 06:46:11.


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