Delphi - TMemoryStream

 
Vista:

TMemoryStream

Publicado por Dany (4 intervenciones) el 12/06/2002 08:19:07
Hola tengo una duda sobre el objeto TMemoryStream.
Tengo un bucle que va leyendo información y debería ponerlo en este objeto, mi pregunta es cuando uso el TStrings.SaveToStream se almacena al final y por lo tanto no machaca lo anterior?

Gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE: TMemoryStream

Publicado por Ernesto D'Spirito (706 intervenciones) el 12/06/2002 19:18:00
El método SaveToStream realiza una escritura a partir de la posición actual en el stream (de memoria, archivo o lo que fuera), y mueve la posición al final de lo que escribió (la posición está en la propiedad Position). Si realizas varios SaveToStream sin hacer otras operaciones sobre el stream, esto significará que efectivamente no se "machaca" lo anterior. Si en cambio quieres que lo anterior se borre, hazle un Clear al stream. Si tu pregunta viene porque te encuentras que el stream está vacío después cuando llega el momento de leerlo, es porque tienes que volver la posición al principio (Position := 0) y entonces leer (después de eso Position quedará al final de lo leído).

Espero haber sido claro, y si no, tal vez este ejemplo te ayude:

procedure TForm1.Button1Click(Sender: TObject);
var
MemoryStream: TMemoryStream;
begin
MemoryStream := TMemoryStream.Create;
try
Memo1.Lines.SaveToStream(MemoryStream);
MemoryStream.Clear; // empezará de cero otra vez
Memo1.Lines.SaveToStream(MemoryStream);
Memo1.Lines.SaveToStream(MemoryStream);
MemoryStream.Position := 0;
Memo1.Lines.LoadFromStream(MemoryStream);
// El memo duplicará sus líneas
finally
MemoryStream.Free;
end;
end;

Saludos,

Ernesto D'Spirito
http://www.latiumsoftware.com/es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar