Recent

Author Topic: Converter um String para TMemoryStream  (Read 3773 times)

aguiar

  • New Member
  • *
  • Posts: 47
  • Ubuntu 14.04
Converter um String para TMemoryStream
« 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.

ezlage

  • Sr. Member
  • ****
  • Posts: 317
  • (Silêncio)
    • Lageteck
Re: Converter um String para TMemoryStream
« Reply #1 on: December 29, 2012, 02:23:55 pm »
Já tentou o StringStream?
Sorry by my poor english.

Atenciosamente,

Ezequiel Lage
ezequiel@lageteck.com

https://github.com/ezlage

 

TinyPortal © 2005-2018