Hola Anel Hernandez.
Tomando en cuenta del formato del archivo que enviaste, proba de este modo:
Código Delphi
[-]
procedure AddLinesToFile(const pFrom, pTo: Integer; const fSource, fTarget: string);
const
CRLF = #$D#$A;
var
fs: TStream;
ts: TStrings;
s : string;
i : Integer;
begin
fs := TFileStream.Create(fTarget, fmOpenReadWrite);
try
SetString(s, nil, fs.Size);
fs.Read(s[1], fs.Size);
s := s + CRLF;
ts := TstringList.Create;
try
ts.BeginUpdate;
try
ts.LoadFromFile(fSource);
finally
ts.EndUpdate;
end;
for i:= pFrom to pTo do s := s + ts[i] + CRLF;
finally
ts.Free;
end;
finally
fs.Position:= 0;
fs.Write(s[1], Length(s));
fs.Free;
end;
end;
Código de prueba:
Código Delphi
[-]
procedure TForm1.btnAddClick(Sender: TObject);
const
MILLION = 1000000;
var
Hz, Start, Stop: Int64;
begin
QueryPerformanceFrequency(Hz);
QueryPerformanceCounter(Start);
AddLinesToFile(1257, 31882, 'c:\tmp\WRF02.DAT', 'c:\tmp\WRF01.DAT');
QueryPerformanceCounter(Stop);
ShowMessage(Format('%d µs.',[(Stop-Start) * MILLION div Hz]));
end;
Creo que demora un tiempo muy aceptable,
Saludos
Edito: Lo olvidaba ...
- Tamaño de WRF01.DAT: 1,55 MB y WRF02.DAT: 12,3 MB