Hola ezequiel913.
Te documento el código linea a linea:
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.FieldCount - 1 do begin
s:= s + StringOfChar(' ', DBGrid1.Fields[i].DisplayWidth -
Length(DBGrid1.Fields[i].AsString)) +
DBGrid1.Fields[i].AsString;
end;
Writeln(ArchTexto, s);
DBGrid1.DataSource.DataSet.Next;
end;
CloseFile(ArchTexto);
DBGrid1.DataSource.DataSet.Bookmark:= BM;
DBGrid1.DataSource.DataSet.EnableControls;
end;
Lo que puede quedar un poco confuso es el uso de
StringOfChar, que devuelve n caracteres iguales al especificado.
Si queremos mostrar la palabra 'hola' (de longitud 4) ajustada a longitud 7 rellenando con '@' los lugares faltantes a la izquierda sería:
Código Delphi
[-]
ShowMessage(StringOfChar('@',7-Length('hola'))+'hola');
De todas formas si hay algo en lo que no me expliqué bién, te ruego que me lo hagas saber y gustoso busco otra forma de hacerlo.
Saludos.