[Lazarus-es] Consulta Archivos TXT

Fjbr. fjbr25 en gmail.com
Sab Ene 3 13:15:56 CET 2009


Jose Luis,

Hay una forma más simple usar un TStringList (o el componente lines de un
memo)...

procedure TFormulario.HacerDeTodoConArchivo(archivo_a_leer:String);
var
  LineasArchivo: TStringList;
  unaLinea: String;
  i: Integer;
begin

  // Fase 1: Cargar Archivo En contendor
  LineasArchivo:= TStringList.Create(nil);
  LineasArchivo.loadFromFile(archivo_a_leer);

  // Fase 2: Procesar archivo
  for i:= 0 to LineasArchivo.Count - 1 do
  begin
    unaLinea:= LineasArchvio[i];
    Hacer_Algo_Con_Cada_Linea(unaLinea);
  end;

  // Fase 3: Guardar Archivo
  LineasArchivo.SaveToFile(archivo_a_leer);

  // Fase 4: Como somos limpios, limpiamos antes de salir
  LineasArchivo.Free;

end;

La idea es que promero vuelcas todo el archivo en memoria. Despues lo
procesas y tal, y finalmente lo reescribes machacando el anterior.

Por supuesto esto es una primera aproximación. Yo incluiría un par de
controladores de excepciones, guardaría el fichero de origen renombrandolo
tras su "carga" tomaría algunas medidas preventivas de seguridad adicionales
(asegurar que el fichero es de texto y cosas así).

Saludos.



2009/1/3 José Luis Vassallo <jose.vassallo en gmail.com>

> Buenas gente, necesito una pequeña ayuda necesito abrir un archivo txt e
> irlo actualizando con información que lee otro programa.
>
> La cuestion es que quiero poder leer cada linea y si corresponde
> actulizarle una información.
>
> Ej. Archivo.txt
> Compu1=OnLine
> Compu2=OffLine
> Compu3=Rota
> Compu4=OnLine
> Compu5=OnLine
> Compu6=OffLine
>
> Quiero poder recorrer el txt y cambiar el texto por ej. en la linea 3
> "Compu3=Rota" a "Compu3=OnLine". Con el siguiente ejemplo yo recorro el
> archivo y muestro en un memotext la información, pero quiero poder modificar
> una linea en particular es posible. Porque probe con Write, append, etc.,
> pero me veo en la obligación de regenerar el archivo y no quiero.
>
>
> procedure TFormulario.CargarArchivoTexto;
> var F: TextFile;
>     sLinea: String;
> begin
>   AssignFile( F, ExtractFilePath( Application.ExeName ) + 'prueba.txt' );
>   Reset( F );
>
>   while not Eof( F ) do
>
>   begin
>     ReadLn( F, sLinea );
>     Memo.Lines.Add( sLinea );
>   end;
>
>   CloseFile( F );
> end;
>
> Muchas gracias por su tiempo.
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20090103/3a20c489/attachment-0001.html>


More information about the Lazarus-es mailing list