Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Eliminar registros con THandleStream (https://www.clubdelphi.com/foros/showthread.php?t=73101)

jars 31-03-2011 19:27:27

Eliminar registros con THandleStream
 
Hola amigos:
Tengo el siguiente problema:
Un archivo de texto con registros y segun una variable pueda tener mas o menos registros, esto es en determinadas circunstancias este puede tener pej. 320 registros y en otras 245, entonces tengo que eliminar los que estan por encima de 245. Este es el codigo que tengo:
Código Delphi [-]
var
  stream: THandleStream;
begin
  hndl := fil_open(AFileSpec, 'srw');
  if hndl < 0 then Exit;
  stream := THandleStream.Create(hndl);
  slChannels.LoadFromStream(stream);

  if slChannels.Count > maxlinescount then
    for i := slChannels.Count-1 downto maxlinescount do
      slChannels.Delete(i);
    stream.Position := 0;
    slChannels.SaveToStream(stream);
    .....
end;
.....

El problema es que no me elimina los registros del archivo.
Algun idea?

Gracias

roman 31-03-2011 21:13:46

Bueno, creo que slChannels.SaveToStream(stream) únicamente guarda los datos de slChannels en el objeto stream pero faltaría escribir éste de vuelta al archivo en disco con el método Write.

Por otra parte, ¿por qué usas un HandleStream? Podrías usar un FileStream. Es más, si, a juzgar por la nomenclatura, slChannels es un StringList, ¿por qué no simplemente usas slChannels.LoadFromFile y slChannels.SaveToFile?

// Saludos

jars 31-03-2011 22:14:41

Ya esta solucionado, use:
Código Delphi [-]
 slChannels.SaveToStream(stream);
 // con size trunco el archivo
 stream.Size := stream.Position;

Gracias


La franja horaria es GMT +2. Ahora son las 20:24:22.

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