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);
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);
if r2 = 10 then
r2 := 1;
if r2 = 11 then
r2 := 0;
result := floattostr(r) + floattostr(r2);
end;