2020

Função que formata o número de telefone

Por Daniel Morais

Algum tempo atrás precisava de uma função para um sistema de delivery, onde você passa como parâmetro o numero de telefone e a função verifica se é de celular ou fixo, se existe DDD ou não, verifica se existe o 9 digito e retorna o numero formatado.

Segue abaixo:

function Tformata_tel(cTexto: string): string;
// Variavel cDDDPadrao é um parametro do meu sistema.
// assim se o operador nao digitar o DDD para agilizar o pedido se nao tiver bina, ele completa com o DDDPadrao automaticamente
begin
   if Length(Trim(ctexto)) = 0 then
      begin
       Result := '';
      end
   else if Length( SoNumero(cTexto) ) = 8 then  // fixo
      begin
         if (strtoint(copy(SoNumero(cTexto),0,1)) >= 6) and (strtoint(copy(SoNumero(cTexto),0,1)) <= 9) then //é um celular
            Result := '('+cDDDPadrao+')'+'9'+copy(SoNumero(cTexto),0,4)+'-'+copy(SoNumero(cTexto),5,4)
         else
            Result := '('+cDDDPadrao+')'+copy(SoNumero(cTexto),0,4)+'-'+copy(SoNumero(cTexto),5,4)
      end
   else if Length( SoNumero(cTexto) ) = 9 then //celular
      Result := '('+cDDDPadrao+')'+copy(SoNumero(cTexto),0,5)+'-'+copy(SoNumero(cTexto),6,4)
   else if Length( SoNumero(cTexto) ) = 10 then  // fixo com ddd
      begin
        if (StrtoInt(copy(SoNumero(cTexto),3,1)) >= 6)  and (StrtoInt(copy(SoNumero(cTexto),3,1)) <= 9) then //celular
           Result := '('+copy(SoNumero(cTexto),0,2)+')'+'9'+copy(SoNumero(cTexto),3,4)+'-'+copy(SoNumero(cTexto),7,4)
        else
           Result := '('+copy(SoNumero(cTexto),0,2)+')'+copy(SoNumero(cTexto),3,4)+'-'+copy(SoNumero(cTexto),7,4)
      end
   else if Length( SoNumero(cTexto) ) = 11 then  //celular com ddd
      Result := '('+copy(SoNumero(cTexto),0,2)+')'+copy(SoNumero(cTexto),3,5)+'-'+copy(SoNumero(cTexto),8,4)

end;

Observe que dentro dela, existe a chamada de outra função onde verifico retorna apenas os números da string “SoNumero”:

function SoNumero(fField: String): String;
var
  I : Byte;
begin
   Result := '';
   for I := 1 To Length(fField) do
       if fField [I] In ['0'..'9'] Then
            Result := Result + fField [I];

end;

Fonte: https://www.teleco.com.br/num.asp