Y para dar mas alternativas. Probemos con TStringList:
Partiendo el archivo por numero de lineas:
Código Delphi
[-]
var
Origen, Destino: TStringList;
i: integer;
begin
Origen:= TStringList.Create;
try
Destino:= TStringList.Create;
try
Origen.LoadFromFile('C:\Origen.txt');
for i:= 0 to Origen.Count div 2 do
Destino.Add(Origen[i]);
Destino.SaveToFile('C:\Trozo1.txt');
Destino.Clear;
for i:= (Origen.Count div 2) + 1 to Origen.Count - 1 do
Destino.Add(Origen[i]);
Destino.SaveToFile('C:\Trozo2.txt');
finally
Destino.Free;
end;
finally
Origen.Free;
end;
end;
y por tamaño en bytes:
Código Delphi
[-]
var
Origen, Destino: TStringList;
i, Size: integer;
begin
Origen:= TStringList.Create;
try
Destino:= TStringList.Create;
try
Origen.LoadFromFile('C:\Origen.txt');
Size:= Length(Origen.Text) div 2;
i:= 0;
while (i < Origen.Count) and (Size > 0) do
begin
Destino.Add(Origen[i]);
dec(Size,Length(Origen[i])+2);
inc(i);
end;
Destino.SaveToFile('C:\Trozo1.txt');
Destino.Clear;
while i < Origen.Count do
begin
Destino.Add(Origen[i]);
inc(i);
end;
Destino.SaveToFile('C:\Trozo2.txt');
finally
Destino.Free;
end;
finally
Origen.Free;
end;
end;
Las ventaja de usar TStringList es que el se encarga de corregir los posibles problemas con los retornos de carro. La desventaja es el intenso trabajo sobre la memoria.