ร¢ลяקэℓℓý. 163 Posted May 31, 2013 Olá a todos da Cyber Gamers, hoje vim postar uma tutorial para vocês de como ler e gravar arquivos de texto em Delphi. Então vamos lá.Existem vários métodos em Delphi para gravar arquivos de 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 do Object Pascal.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:AssignFile ( arq, 'C:AUTOEXEC.BAT' );Reset ( arq );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:while not Eof ( arq ) doAgora 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:procedure percorreArquivoTexto ( nomeDoArquivo: String );var arq: TextFile;linha: String;beginAssignFile ( arq, nomeDoArquivo );Reset ( arq );ReadLn ( arq, linha );while not Eof ( arq ) dobegin{ 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:procedure gravaArquivoTexto ( nomeDoArquivo: String; tabela: TTable );var arq: TextFile;linha: String;beginAssignFile ( arq, nomeDoArquivo );Rewrite ( arq );tabela.First;while not tabela.Eof dobeginWrite ( arq, AjustaStr ( tabela.FieldByName ( 'Nome' ).AsString, 30 ) );Write ( arq, FormatFloat ( '00000000.00', tabela.FieldByName ( 'Salario' ).AsFloat ) );WriteLn ( arq );tabela.Next;end;CloseFile ( arq );end;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;beginwhile Length ( str ) < tam dostr := str + ' ';if Length ( str ) > tam thenstr := 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 espaços no final.Fonte: Código Fonte 3 Vitor Pinho ☮, ɓʀuɳѳ' ИИ#92 and quenii reacted to this Share this post Link to post Share on other sites
Vitor Pinho ☮ 1,199 Posted May 31, 2013 Obrigado por partilhares com a comunidade, continua! http://cyber-gamers.org/public/style_emoticons/default/451960.gif Cumprimentos, Share this post Link to post Share on other sites
close2sky 212 Posted June 3, 2013 Não entendi um BOI http://cyber-gamers.org/public/style_emoticons/default/naodigas.gif mas siga, para quem entenda será muito util. http://cyber-gamers.org/public/style_emoticons/default/451960.gif Cumprimentos Share this post Link to post Share on other sites