Definindo Constantes para a Aplicação
Início  Anterior  Próximo



Uma boa prática para aplicações de telefonica em tempo real é a utilização de estados. Nada mais são que variáveis nas quais são atribuídos valores diferenciados para cada situação possível (falando, atendendo, esperando, etc...).
Por ter métodos assíncronos, a VoicerLib exige do programador uma certa disciplina para manter o código legível e de fácil manutenção. O uso de estados ajuda neste aspecto.
Para aumentar ainda mais a legibilidade de código, definiremos constantes para cada estado possível da aplicação, ao invés de utilizar o número literal na hora de atribuir valores aos estados. Observe o código:
 
Estado := 6;    //Ilegível -> Dificil manutenção  
(....)  
Estado := TRANSFERENCIA;   //Facilidade de manutenção  
 
Isto não é um procedimento obrigatório mas, todos hão de convir que é muito mais fácil trabalhar com palavras do que com valores.
No Delphi, as constantes são definidas em qualquer janela ou módulo, na área const. Todas as linguagens conhecidadas tem seu equivalente.

No caso do nosso exemplo, isto será feito no form principal, pouco antes da palavra-chave implementation.
 
const  
 
   //AS CONTANTES SERÃO DEFINIDAS AQUI  
   //Você deve digitar a palavra const também  
 
var  
  Form1: TForm1;  
 
 
implementation  
 
{$R *.DFM}  
 
Obviamente você pode ir definindo as constantes a medida que os estados vão aparecendo. Aqui já temos todos os estados que serão necessários na execução do programa:
 
const  
 
  // Estados de Atendimento  
  NADA = 1;  
  BOASVINDAS = 3;  
  ESPERA_DIGITOS_MENU = 4;  
  ESPERA_DIGITOS_RAMAL = 5;  
  TRANSFERENCIA = 6;  
  TENTEMAISTARDE = 7;  
  SUBMENU = 8;  
  ESPERA_SUBMENU = 9;  
 
Além dos estados principais do fluxo de atendimento do programa, teremos também alguns estados que serão utilizados durante a transferência e supervisão das ligações: os estados de ramais e de flash:
 
const  
 
  // Estados de Atendimento  
  NADA = 1;  
  BOASVINDAS = 3;  
  ESPERA_DIGITOS_MENU = 4;  
  ESPERA_DIGITOS_RAMAL = 5;  
  TRANSFERENCIA = 6;  
  TENTEMAISTARDE = 7;  
  SUBMENU = 8;  
  ESPERA_SUBMENU = 9;  
 
  //Estado de Ramais  
  LIVRE  = 0;  
  OCUPADO = 1;  
  NAOATENDE = 2;  
 
  //Estados de Flash  
  DISCA = 0;  
  RETOMA = 1;  
 
 
Por último temos algumas constantes que serão utilizadas no exemplo para simplificar as coisas. São configurações de funcionamento da aplicação como ramal de fuga e toques para retomada.

Em uma aplicação real estes valores ficam melhor em uma arquivo de configuração e lidos na inicialização da aplicação:

const  
 
 (...colocar abaixo dos estado de flash.....)  
 
  //Ramais de fuga (telefonista, portaria, etc...)  
  RAMAL_FUGA1 = '220';  
  RAMAL_FUGA2 = '222';  
 
  //Toque para retomada da ligacao em caso do ramal  
  //não atender  
  NUMTOQUESRETOMADA = 5;