Bueno, estuve probando este código en C++Builder 5 y funciona perfectamente, y si quieres separarlo por comas analizalo un poco ya que por el momento no tengo mucho tiempo para hacerlo.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *TXT = new TStringList();
AnsiString dato;
char Registro [500];
//En la variable Registro se almacena el nombre de los campos
strcpy(Registro,"");
for(int i = 0; i < Table1->FieldCount; i++)
{
StrCat(Registro,Table1->Fields->Fields
->FieldName.c_str());
StrCat(Registro,"\t");
}
StrCat(Registro,"\n");
Table1->First();
while (!Table1->Eof)
{
for(int i = 0; i < Table1->FieldCount; i++)
{
// Para este caso en particular, los primeros dos campos son de tipo numérico entero.
//Por lo que los correspondientes registros son transformados en caracteres y almacenados en la variable denominada Registro
if (i<2)
{
dato = IntToStr(Table1->FieldByName(Table1->Fields->Fields->FieldName)->AsInteger); // AsInteger);
StrCat(Registro, dato.c_str());
StrCat(Registro,"\t");
}else
// Los siguientes campos son de tipo numérico flotante y se registran de igual modo (como cadena de caracteres) en la variable Registro
{
dato = FloatToStr(Table1->FieldByName(Table1->Fields->Fields->FieldName)->AsFloat);
StrCat(Registro,dato.c_str());
StrCat(Registro,"\t");
}
}
// Enseguida se almacena el registro de cada uno de los campos, en el Objeto TStringList TXT
TXT->Add(String(Registro));
strcpy(Registro,"");
Table1->Next();
}
//Finalmente lo guardas en un archivo de texto TXT
SaveDialog1->Title = "Guardar Base de Datos";
SaveDialog1->DefaultExt = String("txt");
if (SaveDialog1->Execute())
{ TXT->SaveToFile(SaveDialog1->FileName); }
}
//---------------------------------------------------------------------------
Saludos y suerte!...