Hola daragor.
Eso de maestro ...

Digamos que apenas si llego a aprendiz avanzado...
El problema que veo con usar
DBGrid1.Columns.Count, es que se podrían crear menos columnas que las que existen en la tabla...
Modifiqué un poco el código que mencionas, lo probé en
Lazarus y creo que funciona como se espera.
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
BM: TBookMarkStr;
i: Integer;
s: string;
ArchTexto: TextFile;
begin
AssignFile(ArchTexto,'C:\A_LA_DERECHA.TXT');
Rewrite(ArchTexto);
BM:= DBGrid1.DataSource.DataSet.Bookmark;
DBGrid1.DataSource.DataSet.DisableControls;
DBGrid1.DataSource.DataSet.First;
while not DBGrid1.DataSource.DataSet.Eof do
begin
s:= ''; for i:= 0 to DBGrid1.DataSource.DataSet.FieldCount - 1 do begin
s:= s + StringOfChar(' ', DBGrid1.DataSource.DataSet.Fields[i].DisplayWidth -
Length(DBGrid1.DataSource.DataSet.Fields[i].AsString)) +
DBGrid1.DataSource.DataSet.Fields[i].AsString;
end;
Writeln(ArchTexto, s);
DBGrid1.DataSource.DataSet.Next;
end;
CloseFile(ArchTexto);
DBGrid1.DataSource.DataSet.Bookmark:= BM;
DBGrid1.DataSource.DataSet.EnableControls;
end;
Saludos.
