Existem vários métodos em Delphi para gravar arquivos texto a partir de informações gravadas em bases de dados
ou para ler arquivos texto e armazená-los em bases de dados. Esta dica apresenta um destes métodos: o uso de
TextFiles.
TextFile é um tipo de dado pré-definido no Delphi e corresponde ao tipo Text do Turbo Pascal e doObjectPascal.
Inicialmente para acessar um arquivo de texto, você precisa definir uma variável tipo TextFile, no local que você
achar mais apropriado, da seguinte forma:
var arq: TextFile;
Vamos precisar também de uma variável tipo string para armazenar cada linha lida do arquivo:
var linha: String;
Antes de se iniciar a leitura do arquivo, precisamos associar a variavel TextFile com um arquivo fisicamente
armazenado no disco:
A rotina AssignFile faz a associação enquanto Reset abre efetivamente o arquivo para leitura. AssignFile
corresponde à Assign do Turbo Pascal. Em seguida é necessário fazer uma leitura ao arquivo, para isto
utilizaremos a procedure ReadLn:
ReadLn ( arq, linha );
O comando acima lê apenas uma linha de cada vez, assim precisamos de um loop para efetuar várias leituras até
que o arquivo acabe. Para verificar o fim do arquivo, utilizaremos a função Eof:
whilenot Eof ( arq ) do
Agora uma rotina quase completa para fazer a leitura de um arquivo texto. Esta rotina recebe como parâmetro o nome do arquivo que será lido:
begin
AssignFile ( arq, nomeDoArquivo );
Reset ( arq );
ReadLn ( arq, linha ); whilenot Eof ( arq ) do begin { Processe a linha lida aqui. } { Para particionar a linha lida em pedaços, use a função Copy. }
ReadLn ( arq, linha ); end;
CloseFile ( arq ); end;
E também uma rotina quase completa para gravação de um arquivo texto. Esta rotina recebe como parâmetro o
nome do arquivo que será gravado e uma tabela (TTable) de onde os dados serão lidos:
Note nesta segunda rotina, a substituição de Reset por Rewrite logo após o AssignFile. Rewrite abre o arquivo
para escrita, destruindo tudo que houver lá anteriormente
Note também o uso de Write e WriteLn para gravar dados no arquivo texto.
Finalmente note o uso de AjustaStr e FormatFloat para garantir que campos string e numericos sejam gravados
com um número fixo de caracteres. FormatFloat é uma rotina do próprio Delphi enquanto AjustaStr está definida
abaixo:
function AjustaStr ( str: String; tam: Integer ): String; begin while Length ( str ) < tam do
str := str + ' ';
if Length ( str ) > tam then
str := Copy ( str, 1, tam );
Result := str; end;
O uso da função AjustaStr é fundamental quando você estiver gravando arquivos texto com registros de
tamanho fixo a partir de bases de dados Paradox que usualmente não preenchem campos string com espacos no
final.