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
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
Fico por aqui ate à próxima Quick Tips.
Um abraço
Wesley Y