Olha uma procedure q pode te ajudar, não me lembro onde achei a mesma, mas
se bobiar foi ate um colega da lista que postou:

procedure GeraTexto(Dataset: TDataset; Arquivo: string; Separador: Char);
   var intC1, intC2: Integer;
       strLista: TStringList;
       strLinha: string;
  begin
   strLista := TStringList.Create;
   try
     Dataset.DisableControls;
     Dataset.First;
     strLinha := EmptyStr;

     //Cria a primeira linha com os nomes das colunas
     for intC1 := 0 to Dataset.Fields.Count - 1 do
       if intC1 < Dataset.Fields.Count - 1 then
         strLinha := strLinha + Dataset.Fields[intC1].DisplayLabel +
  Separador
       else
         strLinha := strLinha + Dataset.Fields[intC1].DisplayLabel;

     strLista.Add(strLinha);
     strLinha := EmptyStr;

     for intC1 := 1 to Dataset.RecordCount do
       begin
         for intC2 := 0 to Dataset.Fields.Count - 1 do
           if intC2 < Dataset.Fields.Count - 1 then
             strLinha := strLinha + Dataset.Fields[intC2].AsString
+Separador
           else
             strLinha := strLinha + Dataset.Fields[intC2].AsString;
         strLista.Add(strLinha);
         strLinha := EmptyStr;
         Dataset.Next;
       end;

     strLista.SaveToFile(Arquivo);
     strLista.Free;
     Dataset.EnableControls;
   except
     on Erro: Exception do
       begin
         strLista.Free;
         Dataset.EnableControls;
         raise Exception.Create(Erro.Message);
       end;
   end;

end;


Em 29/03/06, Walter Alves Chagas Junior <[EMAIL PROTECTED]> escreveu:
>
> O vei, este exemplo abaixo é meio que antigo, mas dá pra voce se basear
> nele. Ao invés de pegar de uma String (vide as chamadas do copy), basta
> você
> por os dados das tabelas via fieldbyname.
>
>
>
> Procedure TForm_Nota.CreateTxtData;
> var
>   VFile: TextFile;
>   VItemString, VHandleString1, VHandleString2, VHandleTotalString,
> VFileExport,  VBackupName,VPrepareStringToPrinter, VNumLabel: string;
>   i: integer;
>   VQuant, ValUnit: Extended;
>   VStr: array[1..37] of string;
> label
>   FileReadAbort;
> begin
>   //
>   FItemString1 := '';
>   FItemString2 := '';
>   FPDFString1 := '';
>   FPDFString2 := '';
>   //
>   VFileExport :=
> format('%s\%s.%s',[GConfig.RDirectoryImport,AlignEdit25.Text,
> GConfig.RExtens
> ionImport]);
>   //
>   AssignFile(VFile,VFileExport);
>   if FileExists(VFileExport) then
>   begin
>     if Application.MessageBox('Esta nota já foi exportada. Voce deseja
>
> substituí-la?',CCAPTIONAPPLICATIONTITLE,mb_YesNo+mb_IconQuestion+mb_DefButto
> n1+mb_applmodal) = IDNO then
>       Goto FileReadAbort;
>   end;
>   //
>   Rewrite(VFile);
>   //
>   VStr[1] := InsertChar(AlignEdit25.Text,'0',10);          // Numero da
> Nota
> fiscal   pos: 1-10
>   VStr[2] := InsertChar(AlignEdit11.Text,'0',10);          // Número do
> Pedido        pos: 11-20
>   VStr[3] := InsertChar(AlignEdit29.Text,'0',2);           // Série da
> Nota
> pos: 21-22
> {$IFDEF ENCODER}
>   VStr[4] := copy(FString,26,8);               // Data de emissão
> pos: 9-16
>   VStr[5] := copy(FString,34,8);               // Data de vencimento
> pos: 17-24
>   VStr[6] := copy(FString,42,8);               // Data de saída
> pos: 25-32
>   VStr[7] := copy(FString,50,2);               // Numero de ítens
> inseridos
> na nota    pos: 42-44
>   VStr[8] := copy(FString,52,5);               // CFOP da nota
> pos: 45-48
>   VStr[9] := Copy(FString,57,1);               // Tipo de nota
> pos: 49-50
>   //
>   VStr[10] := copy(FString,58,6);               // Hora da saída
> pos: 51-56
>   VStr[11] := copy(FString,64,14);              // CGC do Fornecedor
> pos: 57-70
>   VStr[12] := copy(FString,78,14);              // CGC do Cliente
> pos: 57-70
>   VStr[13] := InsertCharInPos(copy(FString,92,11),',',10);   // Valor
> total
> dos produtos             pos: 85-101
>   VStr[14] := InsertCharInPos(copy(FString,104,11),',',10);  // Valor
> total
> da nota                  pos: 102-119
>   VStr[15] := InsertCharInPos(copy(FString,115,11),',',10);  // Outras
> despesas Acessorias           pos: 120-136
>   VStr[16] := InsertCharInPos(copy(FString,126,11),',',10);  // Valor do
> seguro                      pos: 137-153
>   VStr[17] := InsertCharInPos(copy(FString,137,11),',',10);  // Valor do
> frete                       pos: 154-170
>   VStr[18] := AnsiUpperCase(copy(FString,148,15));           //
> Transportadora                       pos: 171-185
>   VStr[19] := AnsiUpperCase(copy(FString,164,7));            // Placa do
> veículo                     pos: 208-214
>   VStr[20] := AnsiUpperCase(copy(FString,171,15));           // Motorista
> pos: 215-224
>   VStr[21] := copy(FString,186,5);                           // Quantidade
> de volumes                pos: 225-230
>   VStr[22] := AnsiUpperCase(copy(FString,191,15));           // Espécie de
> volume                    pos: 215-224
>   VStr[23] := InsertCharInPos(copy(FString,206,7),',',6);    // Peso Bruto
> pos: 225-231
>   VStr[24] := InsertCharInPos(copy(FString,214,7),',',6);    // Peso
> Líquido
> pos: 232-238
>   VStr[25] := copy(FString,220,1);                           //
> Responsabilidade do frete
> {$ELSE}
>   VStr[4] := copy(FString,25,8);               // Data de emissão
> pos: 9-16
>   VStr[5] := copy(FString,33,8);               // Data de vencimento
> pos: 17-24
>   VStr[6] := copy(FString,41,8);               // Data de saída
> pos: 25-32
>   VStr[7] := copy(FString,49,2);               // Numero de ítens
> inseridos
> na nota    pos: 42-44
>   VStr[8] := copy(FString,51,5);               // CFOP da nota
> pos: 45-48
>   VStr[9] := Copy(FString,56,1);               // Tipo de nota
> pos: 49-50
>   //
>   VStr[10] := copy(FString,57,6);               // Hora da saída
> pos: 51-56
>   VStr[11] := copy(FString,63,14);               // CGC do Fornecedor
> pos: 57-70
>   VStr[12] := copy(FString,77,14);               // CGC do Cliente
> pos: 57-70
>   VStr[13] := InsertCharInPos(copy(FString,91,11),',',10);   // Valor
> total
> dos produtos             pos: 85-101
>   VStr[14] := InsertCharInPos(copy(FString,102,11),',',10);  // Valor
> total
> da nota                  pos: 102-119
>   VStr[15] := InsertCharInPos(copy(FString,113,11),',',10);  // Outras
> despesas Acessorias           pos: 120-136
>   VStr[16] := InsertCharInPos(copy(FString,124,11),',',10);  // Valor do
> seguro                      pos: 137-153
>   VStr[17] := InsertCharInPos(copy(FString,135,11),',',10);  // Valor do
> frete                       pos: 154-170
>   VStr[18] := AnsiUpperCase(copy(FString,146,15));                     //
> Transportadora                       pos: 171-185
>   VStr[19] := AnsiUpperCase(copy(FString,161,7));                      //
> Placa do veículo                     pos: 208-214
>   VStr[20] := AnsiUpperCase(copy(FString,168,15));                     //
> Motorista                            pos: 215-224
>   VStr[21] := copy(FString,178,5);                      // Quantidade de
> volumes                pos: 225-230
>   VStr[22] := AnsiUpperCase(copy(FString,183,15));                     //
> Espécie de volume                    pos: 215-224
>   VStr[23] := InsertCharInPos(copy(FString,198,8),',',5);   // Peso Bruto
> pos: 225-231
>   VStr[24] := InsertCharInPos(copy(FString,206,8),',',5);   // Peso
> Líquido
> pos: 232-238
>   VStr[25] := copy(FString,214,1);                          //
> Responsabilidade do frete
> {$ENDIF}
>   //
>   VHandleString1 :=
>
> format('%s%s%s%s%s%s%s%s%s%s%s%s%s',[VStr[1],VStr[2],VStr[3],VStr[4],VStr[5]
> ,VStr[6],VStr[7],VStr[8],VStr[9],VStr[10],VStr[11],VStr[12],VStr[13]]);
>   VHandleString2 :=
>
> format('%s%s%s%s%s%s%s%s%s%s%s%s',[VStr[14],VStr[15],VStr[16],VStr[17],VStr[
> 18],VStr[19],VStr[20],VStr[21],VStr[22],VStr[23],VStr[24],VStr[25]]);
>   //
>   VHandleTotalString := format('%s%s',[VHandleString1,VHandleString2]);
>   //
>   Writeln(VFile,VHandleTotalString);
>   //
>   for i := 1 to FInsertItens do
>   begin
>     //
>     ValUnit := Arredonda(StrToFloat(AlignStringGrid1.Cells[9,i]));
>     VQuant :=  Arredonda(StrToFloat(AlignStringGrid1.Cells[1,i]));
>     //
>     VStr[26] := StrZero(AlignStringGrid1.Cells[0,i],2);     // Sequência
> do
> Item      pos: 3-15
>     VStr[27] := StrZero(AlignStringGrid1.Cells[2,i],10);    // Código do
> Item
>     VStr[28] := StrZero(InsertMaskQuant(FloatToStr(VQuant),2),11);     //
> Quantidade             pos: 23-24
>     VStr[29] := AlignStringGrid1.Cells[8,i];                  // Unidade
> de
> Medida      pos: 25-28
>     VStr[30] := StrZero(AlignStringGrid1.Cells[7,i],5);       // IPI
> pos: 29-32
>     VStr[31] := StrZero(AlignStringGrid1.Cells[5,i],5);       // ICMS
> pos: 33-36
>     VStr[32] := StrZero(AlignStringGrid1.Cells[6,i],5);       // ICMS
> SUBST
> pos: 37-41
>     VStr[33] := AlignStringGrid1.Cells[3,i];                  // Cod. Sit.
> Tributária   pos:
>     VStr[34] := RemoveChar(AlignStringGrid1.Cells[4,i],'.');  //
> Classificação fiscal
>     VStr[35] := StrZero(FloatToStr(ValUnit),12);              // Valor
> Unitário
>     VStr[36] := StrZero(AlignStringGrid1.Cells[11,i],12);     // Valor do
> IPI
>     VStr[37] := StrZero(AlignStringGrid1.Cells[12,i],12);     // Valor do
> ICMS
>     //
>     VItemString :=
>
> format('%s%s%s%s%s%s%s%s%s%s%s%s',[VStr[26],VStr[27],VStr[28],VStr[29],VStr[
> 30],VStr[31],VStr[32],VStr[33],VStr[34],VStr[35],VStr[36],VStr[37]]);
>     Writeln(VFile,VItemString);
>    //
>   end;
>   //
>   Application.MessageBox('Arquivo gerado com
> sucesso!',CCAPTIONAPPLICATIONTITLE,mb_Ok + mb_IconInformation+
> mb_DefButton1
> + mb_applmodal);
>   FileReadAbort:
>   CloseFile(VFile);
>   FString := '';
>   FReaderOk := False;
>   ClearData;
>   //
> end;
>
>
> []s
>
> Walter Alves Chagas Junior
> Projeto e desenvolvimento de sistemas
> Telemont Engenharia de telecomunicações
> Belo Horizonte - MG - Brazil
> [EMAIL PROTECTED]
> Fone: (31) 3389-8215 Fax: (31) 3389-8200
>
>
> -----Mensagem original-----
> De: [email protected] [mailto:[EMAIL PROTECTED]
> nome de Cadanos
> Enviada em: quarta-feira, 29 de março de 2006 14:13
> Para: grupo2
> Assunto: [delphi-br] Exportar arquivo TXT
>
>
>
>
>
> Bom Dia Pessoal
>
> Preciso de uma juda, sei que uma das coisas basicas e trabalhar com
> arquivo
> txt, mas não domino muito isso, minha duvida.
>
> Preciso gerar um arquivo txt lendo algumas tabelas, o que é mais facil
> exportar a query direto ou mostrar em um dbgrid e exporta-lo, ou criar uma
> outra tabela com o resultado e depois exporta-lo.
>
> Como posso fazer para que a depois de cada campo da query seja gerado no
> txt
> o separador ( ; )?
>
> Cadanos
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> --
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
>
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> --
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
>
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>


[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a