Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duplica informacion en archivo txt (https://www.clubdelphi.com/foros/showthread.php?t=53497)

muppett 22-02-2008 00:31:32

Duplica informacion en archivo txt
 
Hola dias pasados me dieron estas instrucciones
Código Delphi [-]
Var
Lista:TStrings;
Begin
Lista:=TstringList.Create;
Lista.LoadFromFile('c:\archivo.txt');
Lista.AddStrings(Memo1.Lines);
Lista.SavetoFile('c:\archivo.txt');
Lista.Free

Lo ejecuta todo correctamente el unico problemas es q al abrir el archivo me repite la informacion por ejemplo en el memo esta

perro cafe
gato gris
caballo blanco

y en el achivo txt aparece

perro cafe
gato gris
caballo blanco
perro cafe
gato gris
caballo blanco

Ya me canse de buscar y no encuentro el error, me pordrian ayudar por favor.

Gracias

jachguate 22-02-2008 00:40:24

Si el contenido del memo es siempre el mismo, cada vez que lo grabes, habrá una nueva "copia" de los datos. Es decir, las líneas:

perro cafe
gato gris
caballo blanco

Se grabarán una vez por cada ejecución del trozo de código que mencionas.

Hasta luego.

;)

muppett 22-02-2008 00:44:11

Alguna solucion
 
Eso es muy cierot pero mi duda es como le puedo hacer para q eso no me suceda????? Tengo que utilizar instrucciones como append, rewrite y cosas asi o como lo tengo tiene alguna solucion?????

jachguate 22-02-2008 00:47:22

Revisá nuevamente tu código... estas leyendo el contenido del archivo, luego le añades el contenido del memo y lo guardas de nuevo.

Si no es este el comportamiento que esperas... pues cambia el código para que se adapte a tus necesidades.

German 22-02-2008 00:47:58

Pues veo (creo) que varios errores.. el primero es no utilizar directamente la funcion para cargar/guardar el contenido del memo a un archivo:

Código Delphi [-]
Memo1.Lines.LoadFromFile('C:\Archivo.txt');
Memo1.Lines.SaveToFile('C:\Archivo.txt');

De todas formas, si por la razon que sea quieres utilizar una variable, lo correcto seria:

Código Delphi [-]
Var
Lista:TStringList;
begin
Lista:=TstringList.Create;

//Para cargar
Lista.LoadFromFile('C:\Archivo.txt');
Memo1.Lines := Lista;

//Para guardar
Lista.Text := Memo1.Lines.Text;
Lista.SavetoFile('C:\Archivo.txt');

Lista.Free;
end;

Lepe 22-02-2008 13:08:28

El problema es que usa el método AddStrings de la lista, por eso añade al archivo lo que hay en el memo !!

Para leer:
Código Delphi [-]
Var
Begin
  Memo.lines.LoadFromFile('c:\archivo.txt');
end;

Código Delphi [-]
Var
Begin
  Memo.lines.SaveToFile('c:\archivo.txt');
end;

y si necesitas copiar de uno a otro:
Código Delphi [-]
Var
Begin
  Memo.lines.Assign(Lista); <<< Copiar todo, no añadir
end;


Saludos


La franja horaria es GMT +2. Ahora son las 05:05:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi