Ver Mensaje Individual
  #2  
Antiguo 24-05-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola gmontes.

No tengo muy en claro como se seleccionan los archivos y algún detalle más.

Pero, a ver se me ocurre, para respetar el viejo formato usar un TStringGrid
con tres columnas, poner FixedCols y FixedRows a False y cargar en la primera
columna el texto hasta encontrar el caracter '[' y en la tercera columna el resto de la cadena a
partir del caracter ']', quedando la segunda para el ingreso.

También habría que prohibir que se posicionen en la primera y tercera columna.
Hice una pequeña prueba, sin comprobaciones del tipo y cantidad de caracteres que pueden
ingresar por ejemplo.Y por supuesto sin impresión. (es sólo un bosquejo)

El ejemplo genera un archivo 'PRUEBA.TXT' donde quedan guardadas las líneas con lo tipeado por el usuario.
Código Delphi [-]
...
implementation
{ Impedir acceso a líneas 0 y 2 }
procedure TForm1.StrGrdSelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  CanSelect:= ACol = 1;
end;
{ Abrir uno de los 200 y pasarlo al StringGrid }
procedure TForm1.btAbrirClick(Sender: TObject);
var
  txt: TextFile;
  lin: Integer;
  st: string;
begin
  if OpenDialog1.Execute then
  begin
    AssignFile(txt,OpenDialog1.FileName);
    Reset(txt);
    lin:= 0;
    while not Eof(txt) do
    begin
      ReadLn(txt,st);
      StrGrd.Cells[0,lin]:= Copy(st,1,Pos('[',st));
      StrGrd.Cells[2,lin]:= Copy(st,Pos(']',st),Length(st));
      Inc(lin);
    end;
    CloseFile(txt);
    StrGrd.Row:=0; StrGrd.Col:=1;
  end;
end;
{ Guardar en archivo, imprimir o lo que sea }
procedure TForm1.btGuardarClick(Sender: TObject);
var
  txt: TextFile;
  i: Integer;
begin
  AssignFile(txt,'C:\TEMP\PRUEBA.TXT');
  Rewrite(txt);
  for i:= 0 to StrGrd.RowCount-1 do
    with StrGrd do
      WriteLn(txt,Cells[0,i]+Cells[1,i]+Cells[2,i]);
  CloseFile(txt);
end;
end.

Espero te sirva y saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita