Funcao - aberviar nomes

Top  Previous  Next

// Entra: José Rocha da Silva Sauro

// Sai  : José R. da S. Sauro

 

function AbreviaNome(Nome: String): String; 

var 

  Nomes: array[1..20of string; 

  i, TotalNomes: Integer; 

begin 

  Nome := Trim(Nome); 

  Result := Nome; 

  // Insere um espaço para garantir que todas as letras sejam testadas

  Nome := Nome + #32

  {Pega a posição do primeiro espaço} 

  i := Pos(#32, Nome); 

  if i > 0 then 

  begin 

    TotalNomes := 0

    {Separa todos os nomes} 

    while i > 0 do 

    begin 

      Inc(TotalNomes); 

      Nomes[TotalNomes] := Copy(Nome, 1, i - 1); 

      Delete(Nome, 1, i); 

      i := Pos(#32, Nome); 

    end

    if TotalNomes > 2 then 

    begin 

      // Abreviar a partir do segundo nome, exceto o último.

      for i := 2 to TotalNomes - 1 do 

      begin 

        // Contém mais de 3 letras? (ignorar de, da, das, do, dos, etc.)

        if Length(Nomes[i]) > 3 then 

          // Pega apenas a primeira letra do nome e coloca um ponto após.

          Nomes[i] := Nomes[i][1] + '.'

      end

      Result := ''

      for i := 1 to TotalNomes do 

        Result := Result + Trim(Nomes[i]) + #32

      Result := Trim(Result); 

    end

  end

end; .