No artigo Criando e Gravando dados em Txt com Delphi foi apresentado como realizar a criação e a gravação de dados em um arquivo texto usando o identificador padrão TextFile. A seguir no artigo Lendo dados de Txt com Delphi foi demonstrado como recuperar os dados de arquivos que utilizam o formato txt. Neste terceiro é último artigo que aborda este tema será desenvolvido um controle de notas escolares criando, gravando e recuperando os dados de um arquivo texto.
Uma variável que representa um arquivo texto é declarada fazendo-se referência ao identificador padrão TextFile. As operações de entrada (Readln) ou saída (Writeln) subsequentes sobre o arquivo devem ser precedidas por uma chamada ao procedimento AssignFile e pelo comando de abertura adequado:
a) Reset: prepara um arquivo existente para leitura.
b) Rewrite: um novo arquivo em disco é criado e preparado para processamento.
c) Append: abre um arquivo texto existente para estendê-lo (saídas adicionais).
A lista com os principais procedimentos aplicados aos arquivos texto pode ser encontrada, novamente, no artigo Criando e Gravando dados em Txt com Delphi.
Para demonstrar a utilização dos procedimentos que manipulam arquivos texto em operações de entrada e saída será desenvolvida uma aplicação Delphi para controlar um diário de classe mantendo no arquivo informações como o nome do aluno e o valor de duas notas escolares.
Desenvolvendo a Aplicação Delphi
Criar uma nova aplicação no ambiente de desenvolvimento Delphi 7 através da opção do menu "File|New|Application..." e realizar os dois passos descritos a seguir:
1º Passo: interface
Desenvolver o formulário principal da aplicação como sugere a Figura 1. Atenção: 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. Formulário principal da aplicação. |
2º Passo: implementação
A interação de um programa com um dispositivo de armazenamento através de arquivos passa por três etapas: abertura do arquivo, gravação ou leitura dos dados e fechamento do arquivo. A seguir serão apresentados os códigos implementados para realizar um controle de notas escolares usando arquivo texto.
a) Declarar no início da implementation do formulário da aplicação a variável arquivo como mostra a Listagem 1.
Listagem 1. Declarando a variável arquivo. |
|
b) No evento "onShow" do formulário da aplicação será aberto o arquivo "diario.txt" na unidade de disco "d". Se o arquivo não existir ele será criado (Rewrite), caso contrário, ele será aberto para saídas adicionais (Append) como mostra a Listagem 2.
Listagem 2. Evento "onShow" do formulário da aplicação. |
|
c) No evento "onKeyPress" do componente de entrada edNota1 é realizada a verificação se a tecla pressionada pelo usuário corresponde a um caractere numérico. Com esta implementação, mostrada na Listagem 3, só serão aceitas informações numéricas do tipo real na entrada de dados das notas escolares. Foram utilizados no código os caracteres de controle #8 que corresponde a tecla Backspace e #7 que produz um efeito sonoro na forma de um beep. Nota: a utilização do objeto Sender enviado pelo evento permite que este procedimento também possa ser utilizado no evento "onKeyPress" do componente de entrada edNota2.
Listagem 3. Evento "onKeyPress" dos componentes edNota1 e edNota2. |
|
d) A Listagem 4 apresenta a implementação do evento "onClick" do botão "Gravar Aluno" que realiza a gravação (Writeln) de uma linha, que corresponde aos dados de um aluno, no arquivo texto. Nota: foi utilizado como separador entre os campos nome do aluno e notas escolares o caractere "|" (pipe) para facilitar o procedimento de recuperação destes dados.
Listagem 4. Evento "onClick" do botão "Gravar Aluno". |
|
e) O procedimento para recuperação dos dados, através do procedimento Readln, apresentado na Listagem 5 deverá ser implementado no evento "onClick" do botão "Ler Alunos".
Listagem 5. Evento "onClick" do botão "Ler Alunos". |
|
Aspectos importantes da codificação apresentada na Listagem 5:
1) O procedimento Reset reabre o arquivo para leitura e coloca o ponteiro de arquivo no início.
2) O processo de repetição, para ler "todas" as linhas do arquivo de texto, foi implementado através de uma instrução while com a expressão lógica not eof(arq) que encerra o processo de leitura sempre que o ponteiro do arquivo atingir a marca de fim-de-arquivo.
3) Cada linha do arquivo corresponde aos dados de um aluno que forão separados por caracteres pipe. A recuperação dos dados nome do aluno e notas escolares foi implementada usando a função pos que retorna a posição de um caractere pipe e a função copy que separa um pedaço da linha. O procedimento delete apaga as partes da linha que foram separadas.
f) Por último, no evento "onClose" do formulário da aplicação será fechado o arquivo "diario.txt", como mostra a Listagem 6.
Listagem 6. Evento "onClose" do formulário da aplicação. |
|
Executando a aplicação deve-se informar o nome de um aluno e suas respectivas notas escolares nos componentes de entrada. Ao pressionar o botão "Gravar Aluno" as informações serão gravadas no arquivo texto "diario.txt" na unidade de disco "d". Para visualizar o resultado da gravação basta abrir o arquivo "diario.txt" através do bloco de notas, como mostra a Figura 2.
Figura 2. Arquivo "diario.txt" aberto pelo bloco de notas. |
Para recuperar e processar os dados gravados no arquivo deve-se pressionar o botão "Ler Alunos". O resultado desta operação pode ser observado na Figura 3.
Figura 3. Ilustrando a execução da aplicação: pressionando o botão "Ler Alunos". |
Obrigado e um abraço.