Ver Mensaje Individual
  #3  
Antiguo 31-03-2015
avmm2004 avmm2004 is offline
Miembro
 
Registrado: jun 2006
Ubicación: Santa cruz de Tenerife, Islas Canarias
Posts: 500
Reputación: 18
avmm2004 Va por buen camino
Gracias.
He cogido la rutina que facilito el miembro spu.

Tiene un fallo.
Hay que tener en cuenta lo que puse por comentario de añadido .... si no puede fallar.

Código Delphi [-]
function TForm5.rut_calc_dig(entidad,oficina,cuenta:String):String;
var
  entofi,dig: string;
  i,n,t,suma: integer;
  r,r2: real;
const
  pesos : array[1..10] of integer = (1,2,4,8,5,10,9,7,3,6);
begin
    entidad := fzero(entidad, 4);
    oficina := fzero(oficina, 4);
    cuenta := fzero(cuenta, 10);

    suma := 0;
    entofi := entidad + oficina;
    for i := 1 to 8 do
    begin
      dig := copy(entofi,i,1);
      n := strtoint(dig);
      t := pesos[i+2]* n;
      suma := suma + t;
    end;
    r := 11 - (suma mod 11);
// Añadido
    if r = 10 then
      r := 1;
    if r = 11 then
      r := 0;
//--------

    suma := 0;
    for i := 1 to 10 do
    begin
      dig := copy(cuenta,i,1);
      n := strtoint(dig);
      t := pesos[i]* n;
      suma := suma + t;
    end;
    r2 := 11 - (suma mod 11);
// Añadido
    if r2 = 10 then
      r2 := 1;
    if r2 = 11 then
      r2 := 0;
//--------
    result := floattostr(r) + floattostr(r2);
end;
Responder Con Cita