Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ayuda con un txt (https://www.clubdelphi.com/foros/showthread.php?t=49574)

yue20023 24-10-2007 20:54:37

ayuda con un txt
 
tengo una aplicacion que elabore y me deja limpiar archivos txt el problema es que quiero que no me borre 2 lineas y no puendo encontrar la solucion el archivo original es el siguiente


http://usuarios.lycos.es/yuehang/Copia de uv8922304275aa.txt

quiero dejar la linea en donde dice oficinas y la linea en donde dice siniestro pero no me queda mi codigo es el siguiente :

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  fsarchivoaleer : TextFile;
  fsarchivosalida :TextFile;
  s,s1:string;
begin
  if fileExists(Edit1.Text) then begin
    AssignFile(fsarchivoaleer,Edit1.Text);
    rReset(fsarchivoaleer);
    AssignFile(fsarchivosalida,Edit1.Text+'o');
    Rewrite(fsarchivosalida);
    while not eof(fsarchivoaleer) do begin
      readln(fsarchivoaleer,s);
        if length(trim(s))>0 then begin
        if s[1] in ['O','-','_','S'] then begin
          s:=''
        end else begin
          if s[1]='0' then begin
            if length(trim(s1))>0 then
              writeln(fsarchivosalida,s1);
            s1 := s;
          end else
          if s[1]<> '-' then begin
            if s[1]='R' then begin
                if s[67]='' then
                  s := copy(s,1,66);
                s1 := s1+' '+s;
            end;
          end else
          if s[64] in ['0','1','2','3','4','5','6','7','8','9'] then
            s1 := s1+ ' '+ copy(s,62,67);
        end;

      end;
    end;
    CloseFile(fsarchivosalida);
    CloseFile(fsarchivoaleer);
  end;

end;

end.

por favor ayudenmeeeeeeeee!!!!!!!!!! :eek:

cHackAll 24-10-2007 21:06:23

No entiendo eso de "...me deja limpiar archivos txt...", que tal si subes un archivo de salida para entender mejor?

aeff 24-10-2007 21:17:37

de donde sacaste la funcion *rReset*??

cHackAll 24-10-2007 21:48:50

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var Input, Output: TextFile; Line: string;
begin
 AssignFile(Input, Edit1.Text);
 {$i-}Reset(Input);{$i+}
 if IoResult <> 0 then Exit;
 AssignFile(Output, Edit1.Text + 'o');
 ReWrite(Output);
 while not EOF(Input) do
  begin
   ReadLn(Input, Line);
   while (Line <> '') and (Line[1] = ' ') do
    Delete(Line, 1, 1);
   if (Line <> '') and
      (((Line[3] in ['0'..'9']) and (Line[11] = ' ')) or
       ((Copy(Line, 1, 9) = 'OFICINA: ') or (Copy(Line, 1, 9) = 'SINIESTRO'))) then
    WriteLn(Output, Line);
  end;
 CloseFile(Output);
 CloseFile(Input);
end;

Me tome la libertad de optimizarlo un poquito :cool:; creo que tu función no tomaba en cuenta la última línea.

Espero te sea de utilidad.
Saludos

yue20023 25-10-2007 00:53:06

este es el archivo de como lo deja despues
 
asi se limpia el archivo le quita los demas encabezados y le quita los espacios

http://usuarios.lycos.es/yuehang/uvo.txt lo que quiero haces es deja el primer encabezado y todo lo demas dejarlo como esta aquien el final launica diferencia es que quiero que el primer encabezado salga y los demas los borre

cHackAll 25-10-2007 01:25:54

amigo yue20023; no se qué función usar para crear los nombres... son los que están en "oficinas" o "siniestro" ¿?¿?¿?

Me parece que si elaboras tal reporte de una BD te será mil y un veces más sencillo realizar tu "reporte final" desde allí, ademas que no fue muy clara tu pregunta, tomate unos minutos adicionales en formularla.

Saludos


La franja horaria es GMT +2. Ahora son las 06:01:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi