Consistindo campo CPF

Rotina para consistir um número de CPF.

//------------------------------------------------------------------------------
// Consistencia do campo CPF
// Se o campo informado estiver em branco eh considerado CPF valido,
// Em caso contrario o CPF somente eh valido se o digito de controle bater
//------------------------------------------------------------------------------
function ConsisteCPF(Texto : String) : Boolean;
var
  Limpo : String;
  Posic : array[1..11] of integer;
  I, N, Dig1, Dig2, PriDig, SegDig : integer;
begin
  Limpo := '';
  N := 0;
  for I := 1 to Length(Texto) do
  begin
    if Texto[I] in ['0'..'9'] then
    begin
      Limpo := Limpo + Texto[I];
      Inc(N);
    end;
  end;
  if N = 0 then
  begin
    ConsisteCPF := Trim(Texto) = '';
  end
  else
  begin
    while N < 11 do
    begin
      Limpo := '0' + Limpo;
      Inc(N);
    end;

    for I := 1 to 11 do
      Posic[I] := Ord(Limpo[I]) - $30;

    {Calcula primeiro digito do CPF}
    Dig1 := Posic[1]*10+Posic[2]*9+Posic[3]*8+Posic[4]*7+Posic[5]*6+Posic[6]*5+
            Posic[7]*4+Posic[8]*3+Posic[9]*2;
    Dig2 := Dig1 mod 11;
    If (Dig2 = 0) or (Dig2 = 1) then
      PriDig := 0
    else
      PriDig := 11 - Dig2;

    {Calcula o segundo digito do CPF}
    Dig1 := Posic[1]*11+Posic[2]*10+Posic[3]*9+Posic[4]*8+Posic[5]*7+Posic[6]*6+
            Posic[7]*5+Posic[8]*4+Posic[9]*3+PriDig*2;
    Dig2 := Dig1 mod 11;
    If (Dig2 = 0) or (Dig2 = 1) then
      SegDig := 0
    else
      SegDig := 11 - Dig2;

    ConsisteCPF := (PriDig = Posic[10]) and (SegDig = Posic[11]);
  end;
end;