Hola aqui tienes unas funciones que te pueden ayudar
Código Delphi
[-]
Function RutId(Rut: Longint): Char;
Function RutValido(Rut: Longint;Digito_Id:Char): Boolean;
Function RutCompletoStr(Rut: Longint):String;
Function RutCompletoStr(Rut: Longint):String;
Begin
Result:=FormatFloat('#,',Rut)+'-'+RutId(Rut);
End;
Function RutId(Rut: Longint): Char;
Var Suma : Integer; RutStr : String;
NumTemp : Byte;
Multiplo : Byte;
i : Integer;
DigitoTemp: String[2];
Begin Result :='?';
if (Rut>0) Then Begin
Suma :=0;
RutStr :=IntToStr(Rut);
Multiplo:=2;
for i:=Length(RutStr) downto 1 do
Begin
NumTemp :=StrToInt(RutStr[i]);
Suma :=Suma+(Multiplo*NumTemp);
inc(Multiplo);
if Multiplo>7 then Multiplo:=2;
End;
i:=11-(Suma mod 11);
Case i of 11 : DigitoTemp:='0';
10 : DigitoTemp:='K';
else DigitoTemp:=IntToStr(i);
End;
Result:=DigitoTemp[1];
End;
End;
Function RutValido(Rut: Longint;Digito_Id:Char): Boolean;
Begin
Result:=RutId(Rut)=UpCase(Digito_Id);
End;
Saludos