Ver Mensaje Individual
  #10  
Antiguo 23-03-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
paquechu,

Cita:
Empezado por paquechu
...Debo hacer un programa que inspeccione un archivo de log abierto por otra aplicación y al que ésta última le esta añadiendo líneas contínuamente.....Debo localizar el archivo, abrirlo y empezar a leer desde el final línea a línea...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    ListBox1: TListBox;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function GetFileLastLine(const Filename : String) : String;
var
   StrFile : TStringList;
begin
   try
      StrFile := TStringList.Create;
      StrFile.LoadFromFile(Filename);
      Result := StrFile[StrFile.Count-1];
   except
      on E: Exception do
      begin
         MessageDlg(E.Message, mtError, [mbOk],0);
         Result := '';
      end;
   end;
   StrFile.Free;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   ListBox1.Items.Add(GetFileLastLine('C:\Test_File.txt'));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Timer1.Interval := 100;
end;

end.
El código anterior lee de forma continua por medio de un control TTimer cada 100 ms la última línea de un archivo de texto y la adiciona a un control TListBox para su posterior procesamiento.

Nota: Este código fue probado con un archivo de texto de 2.000.000 de líneas de forma satisfactoria.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 23-03-2013 a las 03:26:08.
Responder Con Cita