Ver Mensaje Individual
  #8  
Antiguo 18-11-2008
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Reputación: 22
sitrico Va por buen camino
Prueba leer por bloques:

Código Delphi [-]
procedure TForm1.Leer(Fn: TFileName);
Const
eol = #10;
var
  F: file;
  NumRead,i, BufPos:LongWord;
  Buf,lin: array[1..1024] of Char;  
// Si ajustas el 1024 a la long máxima de la línea de texto mejora mucho el rendimiento ;-)
  s : String;
begin
    memo1.Lines.Clear;
    AssignFile(F, FN);
    Reset(F, 1);
    BufPos := 0;
    repeat
        BlockRead(F, Buf, SizeOf(Buf), NumRead);
        FillChar(Lin,SizeOf(lin),#0);
        i := 0;
        While Buf[i] <> eol do
           Begin
           lin[i] := Buf[i];
           Inc(i);
           End;
        s := String(Lin);
        Inc(BufPos,i);
        memo1.Lines.Add(s);
        Seek(f,BufPos);
    until (NumRead = 0);
end;

Aunque no tengo archivos grandes para probar...
__________________
Sitrico
Responder Con Cita