Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como cargar datos a un TStringList desde un Stream (https://www.clubdelphi.com/foros/showthread.php?t=55415)

santus 16-04-2008 16:16:07

Como cargar datos a un TStringList desde un Stream
 
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.

Código Delphi [-]
 
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

Código Delphi [-]
...
 
    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:

Código Delphi [-]
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

Gracias!!!
 
Muchas Gracias!!! Efectivamente era el stream.Position := 0;

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


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

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