Hola darkone2k4.
Me alegro que lo hayas podido realizar pero, no entiendo la necesidad de usar copy para ajustar el largo al guardar en el archivo.
De eso se encargan la propiedad
DisplayWidth y
Length en la línea:
Código Delphi
[-]
s:= s + StringOfChar(' ', DBGrid1.Fields[i].DisplayWidth -
Length(DBGrid1.Fields[i].AsString)) +
DBGrid1.Fields[i].AsString;
Si no alterás los valores de presentación tendran por defecto los declarados en el DataSet y por lo tanto el campo cumplirá los requerimientos de longitud. Es decir que un campo de 10 caracteres con 3 ocupados, se guardará con 10 caracteres (7 espacios y los 3 ocupados).
Un saludo.