Lazarus

Other Languages => Portuguese => Topic started by: aguiar on November 24, 2012, 08:40:58 pm

Title: Converter um String para TMemoryStream
Post by: aguiar on November 24, 2012, 08:40:58 pm
Eu tenho um String numa tabela que foi pego de um arquivo .RTF contendo o código RTF. Para inserir num controle eu tenho de fazer LoadFromStream(varStream), então eu tenho que converter o valor que está no campo da tabela para a variável varStream do tipo TMemoryStream. Alguém sabe como converter essa String para MemoryStream?

Tentei usar uma function que vi na internet onde fiz pequena modificação, mas não funciona ou se trata de outro problema.

Stream são linhas em um determinado arquivo, e no meu caso eu tenho apenas uma linha que está nesta String, e é exatamente isso que eu acho que está o problema. Não sei se eu deveria ter um TStrings e não um String com todo o conteúdo. Será isso o problema?

A function que eu estou usando:

var
MS : TMemoryStream;

procedure ...
begin
  MS := TMemoryStream.Create;
  try
     if StringParaMemoryStream(sqlite3Info.Value) then
       MeuControle.LoadFromStream(MS);

  finally
     MS.Free;
  end;
end;

function TForm1.StringParaMemoryStream(Str : String) : Boolean;
begin
  MS.Write(Pointer(Str)^, Length(Str));
  Result := MS.Size <> 0;
  if Result then
    MS.Position := 0;
end;

---------
Até funciona, mas não mostra todo o texto, acho que deve ser porque só tem uma linha (String), será que com um TStrings funcionaria? o problema seria para criar esse TStrings (ou StringList) que vai ter que mudar todo o código do componente.
Title: Re: Converter um String para TMemoryStream
Post by: ezlage on December 29, 2012, 02:23:55 pm
Já tentou o StringStream?
TinyPortal © 2005-2018