PDA

Ver la Versión Completa : Como cargar datos a un TStringList desde un Stream


santus
16-04-2008, 16:16:07
Hola Amigos!.. bien, me encuentro en un pequeño problema.

Quiero llenar unos valores de la base de datos a un TstringList. Esto es, una lista guardada con el método TStringList.SaveToStream , y de ahi lo guardo en la base de datos como un campo Blob. El Guardado lo hace correctamente. Ahora me gustaría recuperar esa lista de valores pero no consigo hacerlo. Seguro que es un error de lógica.. paso a mostrarles mi procedimiento.


procedure TfPropiedades.cargarPlanoBase(aFieldBlob: TField);
var
lista : TStringList;
stream : TStream;
I: Integer;
begin
lista := TStringList.Create;
stream := TMemoryStream.Create;
try
TBlobField(aFieldBlob).SaveToStream(stream);
if (stream.Size > 0) then begin
// hasta aquí entra. Los datos me llegan correctamente desde la base.
lista.LoadFromStream(stream);
for I := 0 to lista.Count - 1 do begin
// Aqui ya no entra. Resulta que el valor de lista.Count es 0
end;
end;
finally
lista.Free;
stream.Free;
end;

end;


tengo delphi 2007 y la base es Mysql y me conecto con DBX por las dudas que sea algo de la base aunque como dije, no creo porque haciendo un debug los datos llegan correctamente.

Cualquier cosa que se les ocurra me ayudaría un monton.

Gracias a todos!!!

cHackAll
16-04-2008, 16:51:55
...

TBlobField(aFieldBlob).SaveToStream(stream);
if (stream.Size > 0) then
begin
stream..Position := 0;
lista.LoadFromStream(stream);

...

duilioisola
16-04-2008, 16:52:22
El ejemplo de delphi 6 pone esto:

procedure TForm1.Button1Click(Sender: TObject);
var
TempStream : TMemoryStream;
begin
TempStream := TMemoryStream.Create;

ListBox1.Items.SaveToStream(TempStream); // write list box contents to the
// stream
TempStream.Position := 0; // reset to the beginning of the stream
RichEdit1.Lines.LoadFromStream( TempStream); // load stream contents into memorich
// edit control

TempStream.Free;

end;

santus
16-04-2008, 17:04:56
Muchas Gracias!!! Efectivamente era el stream.Position := 0;

Les agradesco un monton por la rapidez de sus respuestas!:):):)