Aplicações Console

Introdução à criação de aplicações console no Delphi

 

Neste artigo veremos uma pequena introdução à criação de aplicações não gráficas com Delphi. Aplicações console não possuem formulários, interface gráfica, elas rodam dentro de uma janela do MSDOS. Normalmente esse tipo de aplicação não possui nenhuma interação com o usuário, possuindo certa limitação para execução de determinadas funcionalidades. No entanto, aplicações console, como aplicações gráficas, permitem que você interaja com banco de dados usando os componentes de acesso a dados como dbExpress, IBExpress, etc. Você pode ainda criar Data Modules para armazenar seus componentes de acesso e pesquisa a base de dados.

Funcionamento

Para criar uma aplicação console no Delphi, escolha a opção File|New|Other a partir do menu principal e dentro da aba New selecione Console Application. O Delphi cria um arquivo de projeto (extensão .dpr) contendo a diretiva {$APPTYPE CONSOLE} dentro dele. Essa diretiva diz ao compilador para gerar uma aplicação do tipo Win32 Console. Nota: Por padrão, o Delphi traz a diretiva de controle {$APPTYPE GUI}, que é seu valor default. Está diretiva informa ao compilador para gerar uma aplicação gráfica (UI Application).

Veja a estrutura básica de uma aplicação console a seguir:

 

program Project2;

{$APPTYPE CONSOLE}

uses

SysUtils;

begin

end.

 

Dentro desse arquivo gerado pelo Delphi você pode declarar variáveis, implementar métodos (procedures e functions) e definir classes com seus atributos, propriedades e métodos normalmente.

Exemplo

Para o exemplo deste artigo vamos construir uma aplicação console contendo as funcionalidades básicas de uma calculadora. Está aplicação fará interação com o usuário para que o mesmo possa informar à operação que deseja executar, como também os valores a serem calculados. Inicie uma nova aplicação console (File|New|Other...|Console Application) e salve o arquivo de projeto com o nome de CalculatoraConsole.dpr. Crie uma nova unit (File|New|Unit) e salve-a como untFuncoes. Por questão de organização apenas, criaremos os métodos da calculadora dentro desta unit, e utilizaremos o arquivo de projeto apenas para fazer a chamada a esses métodos. Dentro da unit untFuncoes nós teremos três métodos:

- operadorValido: método utilizado para validar se o valor informado pelo usuário é um operador válido.

- valorValido: método utilizado para validar se o valor informado pelo usuário é um número válido.

- calcular: método utilizado para realizar o cálculo requisitado pelo usuário.

Selecione a unit untFuncoes (View|Units...|untFuncoes) e entre com o seguinte código:

 

Obs: A listagem abaixo traz o código fonte completo da unit untFuncoes.pas.

 

unit untFuncoes;

interface

 

function operadorValido(const pOperador: String) : Boolean;

function valorValido(const pValor: String; const pIndex : Smallint) : Boolean;

function calcular: Double;

 

implementation

 

uses SysUtils; //Declaração utilizada devido ao uso do método TryStrToFloat

 

var

    vOperador : Char; //Variável que receberá o operador informado pelo usuário (+,-,/,*)

    vValor1, vValor2 : Double; //Variáveis que armazenarão os valores informados pelo usuário

 

function operadorValido(const pOperador : String) : Boolean;

begin

      Result := (pOperador <> '') and ((pOperador[1] = '+') or

                    (pOperador[1] = '-') or (pOperador[1] = '/') or (pOperador[1] = '*'));

      if Result then vOperador := pOperador[1]; //Retorna o primeiro caracter digitado pelo usuário

end;

 

function valorValido(const pValor : String; const pIndex : Smallint) : Boolean;

begin

      case pIndex of

      1: Result := TryStrToFloat(pValor, vValor1); //Verifica se o primeiro valor é numérico

      2: Result := TryStrToFloat(pValor, vValor2); //Verifica se o segundo valor é numérico

      else

           Result := False;

      end;

end;

 

function calcular : Double;

begin

       case vOperador of

           '+': Result := vValor1 + vValor2;

           '-': Result := vValor1 - vValor2;

           '/': Result := vValor1 / vValor2;

           '*': Result := vValor1 * vValor2;

       else

           Result := 0.0;

       end;

end;

 

end.

 

Após implementarmos os métodos de nossa calculadora console, precisamos agora codificar o arquivo de projeto (dpr) para que possamos solicitar ao usuário os parâmetros para execução do cálculo. Em aplicações console utilizamos o método Write e WriteLn (escreve e pula uma linha) para escrever valores de saída dentro da janela console. Para fazer a leitura de valores utilizamos os métodos Read e ReadLn (Lê e pula uma linha). Selecione o arquivo de projeto (Project|View Source) e entre com o seguinte código:

 

Obs: A listagem abaixo traz o código fonte completo do arquivo de projeto CalculadoraConsole.dpr. 

 

 

program CalculadoraConsole;

 

{$APPTYPE CONSOLE}

 

uses

    SysUtils,

    untFuncoes in 'untFuncoes.pas';

 

var

    vEntrada : String; //Variável que receberá a entrada do teclado do usuário

 

begin

    repeat

         Write('Entre com o operador para o calculo (+, -, /, *): ');

         ReadLn(vEntrada); //Lê o valor digitado na janela console

    until operadorValido(vEntrada); //Enquanto a entrada não for um operador válido

    repeat

         Write('Entre com o primeiro valor: ');

         ReadLn(vEntrada);

    until valorValido(vEntrada, 1); //Enquanto a entrada não for um valor numérico

    repeat

         Write('Entre com o segundo valor: ');

         ReadLn(vEntrada);

    until valorValido(vEntrada, 2); //Enquanto a entrada não for um valor numérico

    WriteLn('O resultado e: ' + FloatToStr(calcular)); //Efetua o calculo requisitado

    WriteLn(''); //Pula uma linha dentro da janela console

    WriteLn('Pressione Enter para sair');

    ReadLn;

end.

 

No código acima nós declaramos uma variável vEntrada para receber o valor digitado pelo usuário dentro da janela console (janela do MSDOS). Utilizamos o método operadorValido para verificar se o valor digitado é um operador válido ou não, onde, enquanto o valor for inválido a mensagem é impressa para o usuário entrar com um novo valor. Utilizamos em seguida, também dentro de um bloco repeat...until o método valorValido para verificar os valores digitados para o cálculo. Por fim, usamos o método calcular para imprimir na janela console o resultado da operação requisitada pelo usuário.

 

Obs: Caso você queira interromper uma aplicação console antes dela chegar ao seu fim, você pode utilizar uma das seguintes opções:

- Clicar no botão fechar da janela console (X)

- Pressionar as teclas Ctrl+C

- Pressionar as teclas Ctrl+Break

 

Compile (Ctrl+F9) e salve a aplicação. Você pode compilar a aplicação Console também por linha de comando executando:

 

DCC32 CalculadoraConsole

 

Figura 1. Compilando o projeto utilizando linha de comando

Rode a aplicação a partir do Delphi (F9) ou execute o arquivo CalculadoraConsole.exe para testar a aplicação. Veja a Calculadora em execução na Figura 2.

 

Figura 2. Aplicação Calculadora Console em tempo de execução

Conclusão

Vimos que a criação de aplicações console são bastante simples e podem vir a ajudar em determinadas situações. Este artigo foi uma pequena introdução ao uso de Console Application no Delphi; você pode criar aplicações muito mais complexas e com acesso a banco de dados. Um abraço e até a próxima.

Clique aqui para fazer Download