Ver Mensaje Individual
  #5  
Antiguo 29-05-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Reputación: 20
paladincubano Va por buen camino
Otra cosa.
Recuerda que ReadLn lee una linea hasta que se encuentra un fin de linea.
Si este es muy grande pueda que no te quepa dentro de los limites de un String.
Por eso te sugiero que lo hagas con buffer.
Hay varios ejemplo de leer un fichero con buffer. Y vas procesando cada caracter.
Este puede ser un ejemplo

Código Delphi [-]
 procedure TForm1.Cargar(Source, Destination: string);
var   FromF, ToF: file of byte;
  Buffer: array[0..4096] of char;
  NumRead: integer;
  FileLength: longint;
begin   AssignFile(FromF, Source);
  reset(FromF);
  AssignFile(ToF, Destination);
  rewrite(ToF);
  FileLength := FileSize(FromF);
  with Progressbar1 do   begin     Min := 0;
    Max := FileLength;
    while FileLength > 0 do     begin       BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
      FileLength := FileLength - NumRead;
      ..
      //Aqui processas el Buffer con un ciclo de 0 a 4096 y cambias 
      //los caracteres que desees.
      //ejem. if Buffer[i]<#32 then Buffer[i]=' ';
      ..
      BlockWrite(ToF, Buffer[0], NumRead);
      Position := Position + NumRead;
    end;
    CloseFile(FromF);
    CloseFile(ToF);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin   Cargar('c:\fileoriginal.txt', 'c:\nuevofile.txt');
end;
Espero te sirva, si tiene error, perdona, pero es que lo he hecho con un ejemplo de una copia de ficheros, pero puede servirte cualquier cosa dispara que estamos aqui.
saludos
Editado: Recuerda en la condicion decirle que si el caracter es #13 o #10 que no lo reemplazca, ya que son los caracteres de salto de linea.
Hat un progressbar que puedes quitar, Es para que veas por donde va la edicion del fichero

Última edición por paladincubano fecha: 29-05-2008 a las 18:54:26.
Responder Con Cita