Ver Mensaje Individual
  #7  
Antiguo 05-01-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola cmfab.

Si no se puede trabajar en memoria por el tamaño, te va a quedar hacerlo en disco.

Una forma simple sería:
.Crear un archivo destino.
.Leer las línea del origen
.Copiarlas si coinciden con un criterio
.Borrar archivo origen
.Renombrar archivo destino como origen

Un ejemplo muy simplificado:
Código Delphi [-]
function CopiarLinea(Linea: string): Boolean;
begin
  // Aca van las evaluaciónes que tengas que hacer, uso cualquiera para darle funcionalidad al código 
  Result:= False;
  if Pos('el verde prado', Linea) = 0 then // si no contiene la frase 'el verde prado', se copia
    Result:= True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  f1,f2: TextFile;
  Linea: string;
begin
  AssignFile(f1, 'C:\Origen.txt');
  Reset(f1);
  AssignFile(f2, 'C:\Destino.TXT');
  Rewrite(f2);
  while not Eof(f1) do
  begin
    Readln(f1,Linea);
    if CopiarLinea(Linea) then
      Writeln(f2, Linea);
  end;
  CloseFile(f1);
  CloseFile(f2);
  if DeleteFile('C:\Origen.txt') then
    RenameFile('C:\Destino.TXT', 'C:\Origen.txt');
end;

Si la aplicación va a ser usada con mucha frecuencia hay métodos más eficientes, pero para un uso moderado te va a funcionar.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 05-01-2011 a las 23:07:34.
Responder Con Cita