Arquivos TXT

Delphi

23/09/2009

Olá meus amiguinhos,

Há qto tempo hein?! Mas estou de volta e querendo a ajuda de vcs.
Bom, vamos lá.

Eu tenho a seguinte situação, eu faço uma filtragem de dados, e a partir do resultado eu quero converter os dados filtrados para TXT para enviar por e-mail para que um outro programa, num outro Estado possa lê-los.
É algo tipo as centrais telefônicas que preparam os dados para que o sistema possa ler o consumo de cada quarto.

Já agradeço pq sei que vou conseguir a ajuda de vcs.
Bjinhos.

(Detalhe, gostaria de receber dicas das meninas tb. Mostrar que tb estamos no campo. rs rs rs)


Anjinho Loiro

Anjinho Loiro

Curtidas 0

Respostas

Fabiano Góes

Fabiano Góes

23/09/2009

bom vamos ver se entendi:

procedure TForm1.Button1Click(Sender: TObject);
var
  TXT: TStrings;
begin
  TXT := TStringList.Create;
  try

    // abre a query e se posiciona no primeiro registro
    ClientDataSet1.Open;
    ClientDataSet1.First;

    // faz um loop para percorrer todos os registros
    while not ClientDataSet1.Eof do
    begin
      // faz alguma coisa ...

      // escreve o arquivo texto, ex....
      TXT.Append(
        ClientDataSet1.FieldByName(´CODIGO´).AsString+´;´+
        ClientDataSet1.FieldByName(´NOME´  ).AsString
      );

      ClientDataSet1.Next;
    end;

    // Salva o arquivo texto
    TXT.SaveToFile(´c:\Exemplo.txt´);

  finally
    FreeAndNil(TXT);
  end;
end;




GOSTEI 0
Marcosrocha

Marcosrocha

23/09/2009

Mônica, uma das formas mais simples de você gerar este arquivo é jogando para uma TStringList e formatando com espaços, ponto e vírgula ou zeros para delimitar os campos e salvar o arquivo com a função SaveToFile. Vai depender do Layout que o outro programa espera para ler.
var
  MyStList: TStringList;
begin
  MyStList := TStringList.Create;
  MyStList.Add(´MARCOS    25    PROGRAMADOR´);
  MyStList.Add(´DEVMAN          WEBMASTER´);
  MyStList.SaveToFile(´C:\temp\Espacos.txt´);
  MyStList.Clear;
  MyStList.Add(´MARCOS;25;PROGRAMADOR´);
  MyStList.Add(´DEVMAN;;WEBMASTER´);
  MyStList.SaveToFile(´C:\temp\Pontoevirgula.txt´);
  FreeAndNil(MyStList);
end;
Espero não ter sido infeliz em meu exemplo.


GOSTEI 0
Osocram

Osocram

23/09/2009

Eu acho que com as respostas do MarcosRocha e Fabiano Góes vão resolver o seu problema.

Mas tem um detalhe que eu estava pensando, vc tem que gerar isso em um layout especifico?

Ou é o seu programa que vai ler?

Pois assim.... Se tiver um layout especifico... tem que seguir ele, não tem o que fazer.
Agora se vc mesma que vai fazer o programa que vai ser esse arquivo, da para usar recursos interessante do TStrings, como commaText, entre outros.


GOSTEI 0
Marcosrocha

Marcosrocha

23/09/2009

Como diz a frase: Existem Mil maneiras de preparar um bug... Invente uma! :oops:


GOSTEI 0
Anjinho Loiro

Anjinho Loiro

23/09/2009

Meu anjo, mas como devo fazer se não estou usando ClientDataSet, mas sim a Query da paleta BDE?

O que eu devo colocar no lugar destas duas linhas por exemplo?

ClientDataSet1.FieldByName(´CODIGO´).AsString+´;´+
ClientDataSet1.FieldByName(´NOME´ ).AsString


Obrigado pela ajuda.


GOSTEI 0
Marcosrocha

Marcosrocha

23/09/2009

O procedimento é o mesmo:
// Código de Fabiano Góes
procedure TForm1.Button1Click(Sender: TObject); 
var 
  TXT: TStrings; 
begin 
  TXT := TStringList.Create; 
  try 

    // abre a query e se posiciona no primeiro registro 
    Query1.Open; 
    Query1.First; 

    // faz um loop para percorrer todos os registros 
    while not Query1.Eof do 
    begin 
      // faz alguma coisa ... 

      // escreve o arquivo texto, ex.... 
      TXT.Append( 
        Query1.FieldByName(´CODIGO´).AsString+´;´+ 
        Query1.FieldByName(´NOME´  ).AsString 
      ); 

      Query1.Next; 
    end; 

    // Salva o arquivo texto 
    TXT.SaveToFile(´c:\Exemplo.txt´); 

  finally 
    FreeAndNil(TXT); 
  end; 
end;



GOSTEI 0
POSTAR