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. Neste segundo artigo que aborda este tema será demonstrado como recuperar os dados de arquivos que utilizam o formato txt.
Uma variável que representa um arquivo texto é declarada fazendo-se referência ao identificador padrão TextFile. As operações subsequentes sobre o arquivo devem ser precedidas por uma chamada ao procedimento AssignFile e os comandos para realizar a recuperação de dados devem ser precedidas da chamada ao procedimento Reset.
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 será desenvolvida uma aplicação Delphi para efetuar a leitura, da primeira até a última linha, de arquivos criados neste formato.
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:
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:
A interação de um programa com um dispositivo de armazenamento através de arquivos passa por três etapas: abertura do arquivo, leitura dos dados e fechamento do arquivo. A realização destas etapas e a utilização do procedimento readln para ler as linhas do arquivo, deverão ser implementadas no evento "onClick" do botão "Ler Arquivo", como mostra a Listagem 1.
Listagem 1. Procedimento do evento "onClick" do botão "Ler Arquivo". |
|
Aspectos importantes da codificação apresentada na Listagem 1:
1) O procedimento Reset prepara um arquivo existente para leitura e coloca o ponteiro de arquivo no início. Caso o arquivo não exista, esta instrução provocará um erro de entrada/saída. Para proteger a execução do código evitando um eventual erro de abertura deve-se desligar a diretiva de compilação para operações de entrada (Input) através da instrução {$I-}.
2) Com a diretiva de Input desligada o resultado da operação de abertura do arquivo será retornado através da função IOResult. O retorno do valor 0 indica que o arquivo foi aberto com sucesso.
3) 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.
Executando a aplicação deve-se informar o nome do arquivo texto e pressionar o botão "Ler Arquivo". O conteúdo do arquivo lido será exibido nas linhas do componente Memo como pode ser observado nas duas figuras abaixo:
a) Figura 2 mostra o resultado da leitura do arquivo, "tabuada.txt" localizado na unidade "d", criado como exemplo no artigo Criando e Gravando dados em Txt com Delphi;
b) Figura 3 mostra o resultado da leitura do arquivo, "AloMundo.pas" localizado na unidade "d", que representa um código fonte escrito em Linguagem Pascal.
Figura 2. Ilustrando a execução da aplicação: lendo o arquivo "tabuada.txt". |
Figura 3. Ilustrando a execução da aplicação: lendo o arquivo "AloMundo.pas". |
Neste artigo a manipulação de arquivo texto foi implementada com o identificador padrão TextFile. Outra forma de implementação poderia ser realizada através da utilização da classe TStringList. Esta classe permite criar e manipular em memória uma lista de strings, como por exemplo, um arquivo texto. A Listagem 2 mostra o código necessário para carregar um arquivo texto em um componente Memo usando o método LoadFromFile da classe TStringList.
Listagem 2. Carregando um arquivo texto com o método LoadFromFile. |
|