Hola:
Código sacado de trucomanía:
Código:
function NIF(DNI: String): Char;
begin
Result := Copy('TRWAGMYFPDXBNJZSQVHLCKET',StrToInt(DNI) mod 23+1,1)[1];
end;
Como la letra del DNI es la última extraes con Copy desde la posición 1 el nº de caracteres de la cadena menos 1
eDNI := Trim(EditDNI.Text);
eNumerosDNI := Copy(eDNI,1,Length(eDNI)-1);
El problema aquí es que también el usuario te puede poner letras en la parte numérica, por lo que antes deberías recorrer caracter a caracter toda la cadena y verificar que excepto el último caracter los demás son números.
Suerte.