No se como hacerle para acomodar una serie de valores en un archivo de texto y ajustarlos con los espacios en blanco que yo necesito. Mira el archivo es así: 12.23 1.235 1.548 1.56 .25 1.25 Y debe quedar asi: 12.23 1.235 1.548 1.56 .25 1.25 Ojala me puedas ayudar.
1 Respuesta
Respuesta de antipauli
1
1
antipauli, Analista/Programador de Sistemas Oracle
Lo siento pero no veo diferencia entre lo que tienes y lo que pides...
Hola: Mira, es que quiero acomodar en columnas justificadas con los valores. Disculpa, es que cuando envíe los números los acomode justificados, pero cuando se mando el mensaje, lo mando todo del lado izquierdo.
A ver si te sirve esta propuesta: unit uColumnasfich; Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FileCtrl, DB, DBTables, Grids, DBGrids; type TForm1 = class(TForm) DBGrid1: TDBGrid; DataSource1: TDataSource; Table1: TTable; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } Procedure ExportFichero(ds : TDataset; Campo : String; columnas, tamanoColumnas : Integer; fichero : String); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ExportFichero(table1, 'salary', 6, 12, 'c:\export.txt'); end; procedure TForm1.ExportFichero(ds: TDataset; Campo: String; columnas, tamanoColumnas: Integer; fichero: String); var Valor, linea : String; i, cont : Integer; F : Textfile; begin AssignFile(F, fichero); Rewrite(F); cont := 0; linea := ''; with ds do begin First; while not eof do begin Valor := formatfloat('#,##0.00', Fieldbyname(campo).AsFloat); string for i := 0 to tamanoColumnas - length(Valor) do linea := linea + ' '; linea := linea + Valor; Inc(cont); if cont = columnas then begin Writeln(F, linea); cont := 0; linea := ''; end; Next; end; end; CloseFile(F); end; end.
Gracias por ese código, pero lo que pasa es que creo que no me doy a entender. Mira es que yo quiero abro un archivo de texto en un richedit y con los valores o datos que están en el archivo quiero que busque caracteres numéricos, si encuentra espacio en blanco después o antes de ese valor numérico que borre 2 o 3 espacios. Por ejm si tengo 3.45 4.5, yo quiero hacer que junte un poco más mis números, más o menos así 3.45 4.5 Espero que me puedas seguir ayudando, te lo agradeceré mucho.
Toma, espero que lo entiendas: unit uColumnasfich; Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FileCtrl, ComCtrls; type TForm1 = class(TForm) Button1: TButton; RichEdit1: TRichEdit; procedure Button1Click(Sender: TObject); private { Private declarations } Procedure ImportFichero(re : TRichEdit; fichero : String); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} Procedure TForm1.ImportFichero(re : TRichEdit; fichero : String); var Valor, linea, lineaout, valortmp : String; i : Integer; esprimer : Boolean; F : Textfile; begin AssignFile(F, fichero); Reset(F); linea := ''; while not eof(F) do begin Readln(F, linea); esprimer := true; valortmp := ''; for i := 1 to length(linea) do begin if linea <> ' ' then valortmp := valortmp + linea else begin if valortmp <> '' then begin if esprimer then begin lineaout := ' '; esprimer := false; end else lineaout := lineaout + ' '; lineaout := lineaout + valortmp; valortmp := ''; end; end; end; re.lines.Add(lineaout); lineaout := ''; end; re.lines.Add(lineaout); CloseFile(F); end; (* ###26.7####25.7####23.7####23.4#### ###25.4####28.3####30.6####32.2#### ###30.0####27.6####27.3####26.8#### y yo quiero ponerlos de la siguiente manera: #26.7##25.7##23.7##23.4#### #25.4##28.3##30.6##32.2#### #30.0##27.6##27.3##26.8#### *) procedure TForm1.Button1Click(Sender: TObject); begin ImportFichero(RichEdit1, 'c:\input.txt'); end; end.
Sigo viendo igual "si tengo 3.45 4.5, yo " y "así 3.45 4.5" y creo que es debido a todoexpertos ya que a mi también se me come los espacios y eso dificulta un poco la comprensión del problema. Envíame un par de lineas del texto inicial a tratar sustituyendo los espacios por # y luego el resultado que quieres también sustituyendo los espacios por #. Y también indícame si el resultado debe ir a un fichero o no.