Hora por Extenso em uma Aplicação Delphi

Veja neste artigo uma aplicação Delphi para definir uma hora por extenso obtendo para a hora 09:53:48, por exemplo, o seguinte resultado: nove horas, cinquenta e três minutos e quarenta e oito segundos.

Caros Amigos,

Pretendo demonstrar neste artigo uma aplicação Delphi para definir uma hora por extenso obtendo para a hora 09:53:48, por exemplo, o seguinte resultado: nove horas, cinquenta e três minutos e quarenta e oito segundos.

[1º Passo] Formulário Principal

Observe que as caixas de textos explicativos utilizadas na figura apresentam a ordem sequencial e o nome do componente, a página da sua localização e as propriedades que devem ser alteradas com os respectivos valores.


Figura 1. Configuração do Formulário Principal.

[2º Passo] implementation

a) Função que retorna o tempo por extenso através dos seguintes parâmetros: "n" = tempo; e, "tipo" = utilizado para indicar que o tempo recebido corresponde: 1- horas, 2- minutos e 3- segundos.

// o parâmetro "tipo" foi utilizado para indicar que o tempo recebido // (parâmetro "n") corresponde: 1- horas, 2- minutos e 3- segundos. function tempoPorExtenso(n, tipo: integer): string; const parte: array[0..19] of string = ('zero', 'um', 'dois', 'três', 'quatro', 'cinco', 'seis', 'sete', 'oito', 'nove', 'dez', 'onze', 'doze', 'treze', 'quatorze', 'quinze', 'dezesseis', 'dezessete', 'dezoito', 'dezenove'); dezena: array[2..5] of string = ('vinte', 'trinta', 'quarenta', 'cinquenta'); var dez, unid: integer; s: string; begin if (n <= 19) then s := parte[n] else begin dez := n div 10; unid := n mod 10; s := dezena[dez]; if (unid <> 0) then if (tipo = 1) // hora then if (unid = 1) // vinte e uma horas then s := s + ' e uma' else if (unid = 2) // vinte e duas horas then s := s + ' e duas' else s := s + ' e ' + parte[unid] else s := s + ' e ' + parte[unid]; end; if (tipo = 1) then s := s + ' hora' else if (tipo = 2) then s := s + ' minuto' else s := s + ' segundo'; if (n > 1) // plural then s := s + 's'; tempoPorExtenso := s; end;

b) Evento "OnTimer" do componente Timer.

procedure TForm1.Timer1Timer(Sender: TObject); var h, m, s, ms: word; begin DecodeTime(Time, h, m, s, ms); Edit1.Text := tempoPorExtenso(h, 1) + ', ' + tempoPorExtenso(m, 2) + ' e ' + tempoPorExtenso(s, 3); end;

[3º Passo] Executando a Aplicação

A cada 1 (um) segundo, tempo determinado pelo valor da propriedade Interval igual a 1000 do componente Timer, será exibido o resultado da hora do sistema operacinal por extenso, como mostra a figura a seguir:


Figura 2. Executando a Aplicação

Perspectiva Futura: utilizar a função tempoPorExtenso para desenvolver um "relógio falante" com a capacidade de "falar" (Realspeak) a hora em intervalos selecionáveis para ser utilizado por deficientes visuais.

Veja também:

1) Data por Extenso em uma Aplicação Delphi

2) Valor por Extenso: Delphi

Obrigado e um abraço.

Prof. Omero Francisco Bertol (https://www.devmedia.com.br/omero)

Download da Aplicação no topa da página, na opção "código-fonte".
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados