Olá galera, nesta Quick Tips, irei mostrar como gerar um arquivo txt separado por um determinado delimitador, podendo ser usado para geração de arquivos de integração por exemplo.

 

Vamos à construção do Exemplo:

 

Primeiramente vamos adicionar um novo projeto, e nele incluir uma nova unit, salvar a mesma como uDelimitador, e iremos criar uma classe com 2 propertys do tipo TStringList(1 lista irá adicionar os campos da nossa tabela, e a outra terá a finalidade de montar o arquivo separado pelo delimitador dividindo cada linha da tabela em uma linha na lista), um método Create, e um outro Save, veja a implementação completa da mesma.

 

unit uDelimitador;

 

interface

uses Classes;

 

Type

TDelimitador = class

private

FListaPadrao: TStringList;

FListaFinal: TStringList;

procedure SetListaPadrao(const Value: TStringList);

procedure SetListaFinal(const Value: TStringList);

{ private declarations }

protected

{ protected declarations }

public

{ public declarations }

constructor Create;

property ListaPadrao : TStringList read FListaPadrao write SetListaPadrao;

property ListaFinal : TStringList read FListaFinal write SetListaFinal;

procedure Save(FileName : String);

end;

 

implementation

{ TDelimitador }

 

constructor TDelimitador.Create;

begin

  inherited Create;

  ListaPadrao := TStringList.Create;

  ListaFinal := TStringList.Create;

end;

 

procedure TDelimitador.Save(FileName : String);

begin

  FListaFinal.SaveToFile(FileName);

end;

 

procedure TDelimitador.SetListaFinal(const Value: TStringList);

begin

  FListaFinal := Value;

end;

 

procedure TDelimitador.SetListaPadrao(const Value: TStringList);

begin

  FListaPadrao := Value;

end;

end.

 

Agora iremos para o formulário e prepararmos a tela.

Adicione no formulário

 

·         1 ClientDataSet

·         1 DataSorce

·         1 DBGrid

·         1 Memo

·         1 BitBtn

 

Obs : A forma que foi desenvolvido você não precisa criar exatamente os campos que estão abaixo representados, pode ser com uma conexão a uma tabela de seu banco de dados sem problema nenhum

 

delimitador



procedure TFrmPrincipal.BtnGerarClick(Sender: TObject);

Var

I: Integer;

begin

 Delimitador := TDelimitador.Create;

 with Delimitador do

 begin

//Digite aqui o Delimitador '|' ou ',' por exemplo

  ListaPadrao.Delimiter := ';';

  while not CDS.Eof do

  begin

//Loop para pegar o conteudo de todas as colunas do CDS

   for I := 0 to CDS.FieldCount - 1 do

     ListaPadrao.Add(CDS.Fields[I].Value);

{Adiciona na lista final todo conteúdo das

colunas do CDS em uma única linha }

   ListaFinal.Add(ListaPadrao.DelimitedText);

   CDS.Next;

   Delimitador.ListaPadrao.Clear;

  end;

{Método para salvar fisicamente o arquivo Save('c:\listafinal.txt');

 Memo1.Lines.AddStrings(ListaFinal);

 end;

end;

Veja o resultado final

 

delimitador


 

Fico por aqui ate à próxima Quick Tips.

 

Um abraço

 

Wesley Y