Pessoal, no parte file, esqueci de incluir a liberação dos objetos 
ACsvFile e ACsvRow. Não esqueçam disso antes de usar esta rotina. 
Postem seus comentários sobre ela nesta thread.

Sds.

--- Em delphi-br@yahoogrupos.com.br, "Rubem Nascimento da Rocha" 
<[EMAIL PROTECTED]> escreveu
>
> 
> Não sou muito de fazer esse tipo de coisa, mas aí vai a receita de 
bolo 
> pronta (pra quem não quer ter trabalho e querer tudo mastigado!)
> 
> { A partir de uma tabela paradox ativa em um TTable, exporta o seu 
conteúdo
>   atual para um arquivo texto padrão CSV. Precisa das units DB e 
DBTables }
> procedure PDoxToCSV(ATable: TTable; const CsvFilePath: String);
> const
>   { Tipos de dados que não são permitidos na exportação de dados }
>   AFieldTypesNotAllowed: set of TFieldType =
>     [ftUnknown, ftBytes, ftVarBytes, ftBlob, ftGraphic, 
ftParadoxOle,
>      ftDbaseOle, ftTypedBinary, ftCursor, ftADT, ftArray, 
ftReference,
>      ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface,
>      ftIDispatch, ftGuid];
> 
>   { Tipos para tratamento de campos de ponto flutuante }
>   AFieldFloatTypes: set of TFieldType =
>     [ftFloat, ftCurrency, ftBCD, ftFMTBcd];
> 
>   { Tipos para tratamento de campos string }
>   AFieldStringTypes: set of TFieldType =
>     [ftString, ftMemo, ftFixedChar, ftWideString];
> var
>   lBookmark: TBookmark;
>   lFld, lFldCount: Integer;
>   ACsvFile, ACsvRow: TStringList;
>   AFieldTypesNotAllowed: set of TFieldType;
>   AFieldFloatTypes: set of TFieldType;
>   lFieldData: String;
> begin
>   lBookmark := ATable.GetBookmark;
>   while not ATable.ControlsDisabled do
>     ATable.DisableControls;
>   ATable.First;
> 
>   Screen.Cursor := crHourGlass;
>   ACsvFile := TStringList.Create;
>   ACsvRow := TStringList.Create;
>   ACsvRow.Delimiter := ',';
> 
>   try
>     { Cabeçalho de um CSV sempre terá o nome dos campos. Ao mesmo 
tempo,
>       checa se os campos possuem tipos de dados válidos para 
exportação. }
>     lFldCount := ATable.FieldCount;
>     for lFld := 0 to lFldCount - 1 do
>     begin
>       if ATable.Fields[lFld].FieldType in AFieldTypesNotAllowed then
>         raise Exception.CreateFmt('Table %s has fields with not 
supported 
> data types.');
>       ACsvRow.Add(ATable.Fields[lFld].FieldName);
>     end;
>     ACsvFile.Add(ACsvRow.DelimitedText);
> 
>     { As próximas linhas do CSV correspondem às linhas de dados }
>     while not ATable.Eof do
>     begin
>       ACsvRow.Clear;
>       for lFld := 0 to lFldCount - 1 do
>       begin
>         lFieldData := ATable.Fields[lFld].AsString;
>         if ATable.Fields[lFld].FieldType in AFieldFloatTypes then
>           lFieldData := StringReplace(lFieldData, ',', '.', 
[rfReplaceAll])
>         else if ATable.Fields[lFld].FieldType in AFieldStringTypes 
then
>           lFieldData := StringReplace(lFieldData, #32, #255, 
> [rfReplaceAll]);
>         ACsvRow.Add(lFieldData);
>       end;
>       ACsvRow.DelimitedText := StringReplace(lFieldData, #255, #32, 
> [rfReplaceAll]);
>       ACsvFile.Add(ACsvRow.DelimitedText);
>       ATable.Next;
>     end;
>     ACsvFile.SaveToFile(CsvFilePath);
>   finally
>     ATable.GotoBookmark(lBookmark);
>     ATable.FreeBookmark(lBookmark);
>     while ATable.ControlsDisabled do
>       ATable.EnableControls;
>     Screen.Cursor := crDefault;
>   end;
> end;
> 
> Sds.
> 
> >From: "Welson Tavares" <[EMAIL PROTECTED]>
> >Reply-To: delphi-br@yahoogrupos.com.br
> >To: delphi-br@yahoogrupos.com.br
> >Subject: [delphi-br] Paradox -> CSV
> >Date: Mon, 19 Feb 2007 15:48:47 -0200
> >
> >Boa tarde,
> >
> >   Alguém tem alguma aplicação/rotina que leia os dados de uma 
tabela do
> >Paradox e salve os dados como CSV?
> >
> >Valeu
> >
> >Welson Tavares
> >
> >
> >[As partes desta mensagem que não continham texto foram removidas]
> >
> 
> _________________________________________________________________
> MSN Busca: fácil, rápido, direto ao ponto.  http://search.msn.com.br
>


Responder a